如何访问由jquery创建的ul元素

时间:2012-07-12 09:46:33

标签: jquery jquery-selectors

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

}

由于

3 个答案:

答案 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");
});