2014-02-22 68 views
0

反應最好,的jQuery - 添加類不具有點擊功能

有人可以幫我找出來,如何與添加的類元素能夠像它有類從一開始一個元素進行操作? - >($(document).ready(...))。我認爲類不添加到單擊事件,但不知道如何解決......

<script type="text/javascript"> 
    $(document).ready(function() { 
    ... 
     $('span.del').click(function() { 
     var id = $(this).parent().attr('id') 
     $("#"+id).remove() 
     var input_values = new Array(); 
     input_values [0]= id; 
     load_page("change","taskMenu2.php",input_values,'del') 
      }) 
    ... 
    }) 
</script> 

-

<ul> 
    <li id="1" ><span class="del"></span> old </li> 
    <li id="2" ><span class="del"></span> old </li> 
    <li id="3" ><span class="del"></span> old </li> 
    <li id="4" > NEED A DEL SPAN </li> 
</ul> 

現在: 我要添加跨越類「del」到li與ID 。 當我點擊它(跨度)時,它應該像其他的一樣執行上面的函數。

<script type="text/javascript"> 
    ... 
    $("#4").prepend('<span class="del"></span>'); 
    ... 
</script> 

(jquery的2.1.0分鐘時)

希望一個溶液

親切的問候

回答

2

這裏需要使用event delegation因爲你的span已動態創建:

$(document).ready(function() { 
    $('#4').on('click', 'span.del', function() { 
     var id = $(this).parent().attr('id') 
     $("#"+id).remove() 
     var input_values = new Array(); 
     input_values [0]= id; 
     load_page("change","taskMenu2.php",input_values,'del') 
    }); 
}) 

此外,一個側面說明了的id你在此列出項目。從HTML 4 specification

ID和名稱標記必須以字母([A-ZA-Z])開始,並且可以是 後跟任意數量的字母,數字([0-9]),連字符( 「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。

HTML 5 specification更是寬容的,只說:

值必須是在元素的家 子樹的所有ID之間獨特的,並且必須包含至少一個字符。該值不能包含任何空格字符 。

因此,對於一個有效的HTML標記,你可以改變<li id="1" ><li id="2" > ....這樣別的東西如<li id="li1" ><li id="li2" >...

2

可以嘗試一個容器元件上的.on()功能。

例如,在這種情況下,是這樣的:

$("ul").on("click", ".del", function() { // Your code }); 
+0

你在哪裏已經到plave呢? $(document).ready之外?或者,如果我把它放在它外面,它是否仍然在$(document).ready中?因爲,你不會那麼得到2個完全相同的代碼嗎? – Dieter

+0

$(document).ready yes,你不會複製任何代碼,你應該刪除'$('span.del')。click(function(){'甚至@Unknown建議同樣的答案)告訴我,如果我得到你問的東西。 –

1

.click()事件將不結合事件來動態HTML元素。您應該使用.on()爲動態HTML元素綁定事件:

$('ul').on('click', 'span.del', function() { 
    // YOUR CODE HERE 
});