1

我有一些 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');
    });

}

谢谢

4

3 回答 3

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。

于 2012-07-12T09:50:18.390 回答
2

您需要使用 live Try 进行绑定:

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

.on

$(document).on("click", '.ULclassName input', function() {
    alert("aaaaaaaaaaa");
});
于 2012-07-12T09:50:35.687 回答
0

使用委托怎么样?

$('body').delegate('.ULclassName input', 'click', function(){
    alert("aaaaaaaaaaa");
});
于 2012-07-12T09:52:04.180 回答