8

ajax呼び出しとhtml(data)でコンテンツを返す後にlive('click'、function() "を機能させるにはどうすればよいですか?4時間の検索の後、どこにも行かないので尋ねたほうがいいと思います。

この部分は機能しています:

$.ajax({
    type: "POST",
    url: "loadAlbum.php",
    data: dataString,
    success: function(data){
        $(".loader").html(data, {}, function(){ 
        //content is loaded now
        //need to get the function below working in this part of the content
        }); 
    },
    error : function(data) { } 
    });
});

そして、私は上記のajaxで動作するためにこれが必要です:

$('.divName as inside loader').live('click',function(){  

alert('gotClicked');

    var vidItem = $(this).attr('data');
    vidItem = vidItem.split('-'); var bookID = vidItem[0]; var state = vidItem[1];
    var dataString = 'bookID='+ bookID + '&state=' + state;

alert(dataString); 

});
4

4 に答える 4

25

.live()非推奨です。.on()代わりに使用してください。

$("body").on("click", "divClass", function(event){
    alert('gotClicked');
});

また、divを正しく呼び出していることを確認するために、div名ではなく、その方法で呼び出す場合はdivクラスにする必要があります。

また、を使用live()on()て、ドキュメントの読み込み時に存在する親レベルで適用する必要があります。使用しているこのdivNameが、ページがそれ自体をロードしたときに存在していなかった場合、バインドできません。ただし、body要素にバインドすると、クリックが発生したときに常にdivが検索されます。

于 2012-11-27T13:13:57.400 に答える
10
 $(document).delegate(".classname","click",function(){
        alert("ok");
    });
于 2014-02-04T08:54:01.443 に答える
0

簡単です。jsがロードされた後にデータが追加されるので、次の手順を実行する必要があります...

$(selector).live('click', function(e){
    alert('this is a click');
});

これを頻繁に行うと、パフォーマンスが低下することに注意してください。場合によっては、手動でバインドを解除して再バインドする方がよい場合があります。

于 2012-11-27T14:02:09.737 に答える
0

ajax呼び出しを介して返されるHTMLデータを追加しているため、新しいHTMLがDOMに追加された後で関数をバインドする必要があります。コードを呼び出す場合:

$('.divName as inside loader').live('click',function(){  ...

DOMが更新される前は、jQueryはイベントを適切にバインドできません。code.livecodeブロックをいつ解析/設定するのかわかりません。返されたHTMLをDOMに追加した後、成功コールバックまたは成功コールバックの直後に呼び出される関数(存在する場合)のいずれかで.liveコードを適用する必要があります。

お役に立てれば。

于 2012-11-27T13:23:00.943 に答える