2012-07-12 25 views
1

創建我有一些jQuery的邏輯UI元素,下面是如何訪問的jQuery

$(document).ready(function() { 
    $('<ul class="className"><\/ul>').insertBefore('.divClassName'); 
    $.each(jsArray, function(key, value) { 
     $('<li><input class="dynamicFilterInput" type="checkbox" checked="checked" value="' + key + '" id="filterID' + key + '" /><label for="filterID' + key + '"> ' + value + ' <\/label><\/li>').appendTo('ul.afilters'); 
    }); 
}); 

上面的代碼使動態<ul><li></li>...</ul>代碼,然後我有Ajax調用和完成我需要更新ul名單,

我有ul定義像下面

​​

這個功能是可訪問的頁面加載時的功能,但我的阿賈克斯通話後,當我更新ul列表並點擊複選框,沒有任何反應,我看到沒有警報,

如何訪問$('.ULclassName input').click(function() {});

編輯:這是complete回調邏輯在我的Ajax調用

complete: function(){ 
$('ul.className').hide(); 

$('<ul class="className"><\/ul>').insertBefore('.divClassName'); 
    $.each(jsArray, function(key, value) { 
     $('<li><input class="dynamicFilterInput" type="checkbox" checked="checked" value="' + key + '" id="filterID' + key + '" /><label for="filterID' + key + '"> ' + value + ' <\/label><\/li>').appendTo('ul.afilters'); 
    }); 

} 

感謝

回答

2

你需要用活 嘗試綁定:

$('.ULclassName input').live("click", function() { 
    alert("aaaaaaaaaaa"); 
}); 

隨着.on

$(document).on("click", '.ULclassName input', function() { 
    alert("aaaaaaaaaaa"); 
}); 
+0

不要使用現場它貶值 – coolguy 2012-07-12 09:50:49

+0

@ubercooluk是的,你說得對,謝謝你不知道, – soupy1976 2012-07-12 09:51:41

+0

@ubercooluk你仍然不應該downvote這,這是'.on'的'文檔'代表團別名反正 – Esailija 2012-07-12 09:54:24

2

你需要使用jQuery的.on()功能。

更具體的信息可以在jQuery的手冊在這裏找到: http://api.jquery.com/on/

它可以通過多種方式取決於您是否使用綁定,代表,或住在被調用。

// Bind 
$('.ULclassName input').on("click", function(){ 
    alert("aaaaaaaaaaa"); 
}); 

//Delegate 
$(".ULclassName").on("click", "input", function(){ 
    alert("aaaaaaaaaaa"); 
}); 

//Live 
$(document).on("click", ".ULclassName input", function() { 
    alert("aaaaaaaaaaa"); 
}); 

在jQuery中< 1.7,這些都是以前用過像這樣:

// Bind 
$(".ULclassName input").bind("click", function(e) {}); 

// Live 
$(".ULclassName input").live("click", function(e) {}); 

// Delegate 
$(".ULclassName").delegate("input", "click", function(e) {}); 

我想你可能想使用一個LIVE。

+1

您使用'.on'錯 – Esailija 2012-07-12 09:50:48

+0

這是偉大的,謝謝關心,我不知道御不得不反對票,感謝關心我 – user1458253 2012-07-12 10:04:31

+0

下跌評選爲我我原來的答覆是'。對( )綁定的功能,這本來是錯誤的。 – Jeemusu 2012-07-12 10:05:10

0

有關使用委託如何?

$('body').delegate('.ULclassName input', 'click', function(){ 
    alert("aaaaaaaaaaa"); 
});