2014-09-29 61 views
0
類選擇列表對象

我jQuery是一個有點生疏,因此這noob問題:不能由

我有這樣的無序列表,

<ul data-role="listview" id="list-all-forms"> 
</ul> 

這是我從一個JSON對象填充:

function updateChecklists(){ 
    requestAllForms = $.get("/list-all-forms"); 

    requestAllForms.promise().done(function(data){ 
     $.each(data,function(key, val){ 
      $("<li><a class='checklistObject' id='" + val.id +"'>" + val.name +"</a></li>").appendTo("#list-all-forms"); 
     }); 
     $('ul').listview('refresh'); 
    }); 
}; 

然而,當我試圖從與列表中的類checklistObject的鏈接點擊事件,沒有任何反應......

$(".checklistObject").on("click", function(){ 
    console.log("click on list object!"); 

}); 

我該如何獲得該功能?

+0

嘗試像這樣$(「li a.checklistObject」) – 2014-09-29 21:29:58

+1

查看重複。 '$(document).on('click','。checklistObject',function()...'將起作用。 – mccannf 2014-09-29 21:31:54

回答

3

根據您何時創建事件處理程序,這些對象可能存在也可能不存在,因此事件未被正確連接。你既可以等待它們的設置是爲了添加事件處理程序或使用事件委託,改變你的代碼是這樣的後直至:

$('#list-all-forms').on('click', '.checkListObject', function() { 
    console.log($(this), "click on list object"); 
}); 

這將前和你的項目工作後添加到DOM。

或在評論中提到,這樣的事情:Event binding on dynamically created elements?

1

你確定你要添加的jQuery的聽衆後的要素有哪些?如果沒有,選擇器將只是添加一個點擊監聽器。如果您想稍後將列表項目加載到列表中,則可以執行事件委派。

$("#list-all-forms").on("click", ".checklistObject", function() { 
    console.log("click on list object!"); 
});