2012-06-22 90 views
0

總之,我來有一系列的div這種結構在頁面上:JQuery的追加到選定的項目上點擊

<div id="statuses"> 
    <p><?php echo $status; ?></p> 
    <div id="statuscom"> 
     <a id="comment" href="#">Comment</a> 
    </div> 
</div> 

,並點擊評論HREF時,我希望它附加其他div到已被點擊的div,並且只有該div。

我有這樣的:

$(function { 
    $("a#comment").click(function() { 
     $(this).append("<div id=\"statuscomadd\"</div>"); 
    }); 
}); 

似乎沒有哪個做任何事情,同樣,任何幫助將不勝感激!

+4

檢查.append()的標記 – Musa

+2

這太糟糕了!如果您不止一次點擊div,您將添加多個具有相同ID的div。 Id必須是唯一的! – aaberg

回答

1
  1. 你的語法錯誤(該函數沒有參數,也不是一個簡單的()
  2. 你的HTML是錯誤的(div未閉)
  3. 如果wanto創建頁面加載一個單擊處理程序,使用$(document).ready(...)$(function() {...})
  4. 您正在追加A標籤旁邊的空DIV,這就是你想要的嗎?
  5. 爲什麼使用一個id(statuscomadd),當你可以點擊並添加多個div,如另一個用戶說的?更好地使用課堂。或者,如果您只需添加一個div,請使用.one()處理程序。

嘗試:

$(function() { 
    $("a#comment").click(function() { 
     $(this).append("<div class=\"statuscomadd\"></div>"); 
    }); 
}); 
+0

1)我想這可能是JQuery的一個新特性。 2)我的不好,抱歉。 3)感謝提示 4)是的,我還沒有填充它,但它已經預先設置了高度和寬度,所以它仍然顯示。 5)謝謝,我會改變.one() 6)工程很好,非常感謝。 – AviateX14

+0

@ AviateX14不,這是一個簡單的Javascript錯誤。一個函數(在這種情況下的閉包)必須總是有參數,或者如果零參數是預期的,則爲「()」。 – Cranio

+0

@ AviateX14很高興你已經整理出來:) – Cranio

0

你不應該附加在div標記。相反,你應該該標籤後追加它(或之前,也許)

$(function() { 
    $("a#comment").click(function() { 
     $('<div id="statuscomadd"></div>').insertAfter(this); 
    }); 
}); 
+0

可能應該使一個http://api.jquery.com/one/因爲id是靜態的。 – canon

+1

此代碼仍然是錯誤的(請參閱該功能):) – Cranio

1

首先,你不應該有在同一個頁面上的多個標籤相同的ID(評論)。

話雖如此,您的代碼有幾個問題:缺少括號function,在HTML中附加到<a>標記和語法問題。總的來說,它應該是這樣的:

$(function() { 
    $("a#comment").click(function() { 
     $("<div id=\"statuscomadd\"></div>").insertAfter(this); 
    }); 
});