我有一些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
定义了函数,如下所示
$('.ULclassName input').click(function() {
alert("aaaaaaaaaaa");
});
当页面加载时可以访问此功能,但是当我更新ul列表并单击复选框时,在我的ajax调用之后,没有任何反应,我看不到警报,
如何访问$('.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');
});
}
由于
答案 0 :(得分:2)
您需要使用jQuery .on()
功能。
更多具体信息可以在jQuery手册中找到: http://api.jquery.com/on/
可以通过多种方式调用它,具体取决于您是使用bind,delegate还是live。
// 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&lt; 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 :(得分:2)
你需要使用live绑定 尝试:
$('.ULclassName input').live("click", function() {
alert("aaaaaaaaaaa");
});
使用.on
:
$(document).on("click", '.ULclassName input', function() {
alert("aaaaaaaaaaa");
});
答案 2 :(得分:0)
如何使用委托?
$('body').delegate('.ULclassName input', 'click', function(){
alert("aaaaaaaaaaa");
});