2012-06-25 61 views
0

我有以下fiddle1 http://jsfiddle.net/y6tCt/35/。我需要動態構建checkbox列表,但現在我已硬編碼兩行。當我點擊其中一個checkbox es時,它不會調用「更改」事件。JQuery複選框甚至

如果有人能夠看一看,讓我知道我做錯了什麼,我將不勝感激。

+0

的可能重複[jQuery的:事件綁定的動態創建的元素(HTTP ://stackoverflow.com/questions/203198/jquery-event-binding-on-dynamically-created-elements) – Esailija

回答

1

你可以使用jquery live,因爲它在動態創建的元素上工作。

$(":checkbox").live('change', function() { 

http://jsfiddle.net/y6tCt/42/

+0

耶,非常感謝你的工作。 –

+1

@Martin這確實有效,並且是一個很好的解決方案,但是希望你能理解你的原創爲什麼不起作用,如果不能,那麼請看下面的一些答案,這些答案會更詳細地解釋。 –

2

的問題是,你的DOM是buildHTML前準備好();已經完成運行。

將調用放入buildHTML();如下

$(document).ready(function() { 
    buildHTML(); 
    $(":checkbox").change(function() { 

     alert("here"); 

    });}); 
0

結帳腳本它現在的工作,http://jsfiddle.net/y6tCt/46/

這裏是我改劇本,

buildHTML(); 
$(":checkbox").click(function() { 
      if($(this).is(':checked')) { 
     alert("Checked"); 
      } else { 
       alert('Unchecked'); 
      } 

     });}); 
+0

我可以建議'this.checked'而不是'$(this).is(':checked')'更高效,更容易輸入,並且(在我看來)更易於閱讀...... – nnnnnn

+0

好吧..感謝您分享知識。 – Subhajit