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

.on()jQuery機能を使用する必要があります。

より具体的な情報は、こちらの 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 に答える