2

こんにちは、ajaxがコンテンツを動的にロードするたびに同じ問題が発生します。たとえば、コメントや投稿など、すべて正常に機能します。しかし、コメントのようなボタンは、ページを更新するまで機能しません。私の好きなスクリプトの下で、この問題を解決する方法を教えてください

$(".comment_like").click(function()
{
var cID = $(this).attr("ccid");
var cREL = $(this).attr("rel");
var cbox = $(this).attr("box_id");
var cowner = $(this).attr("ownercli");
var cURL='comment_like.php';
var dataString = 'msg_id=' + cID +'&rel='+ cREL+ '&owner='+ cowner+ '&cbox='+ cbox;
if(cREL=='Like')
{
$('#c'+cID).html('Unlike:').attr('rel', 'Unlike').attr('title', 'Unlike');
}
else
{
$('#c'+cID).attr('rel', 'Like').attr('title', 'Like').html('Like:');
}
        xhr = $.ajax({
            type: "POST",
            url: cURL,
            data: dataString,
            cache: false
        }).done(function(htmlc){
      $('.cml'+cID).html(htmlc);
        });
});
4

2 に答える 2

2

$(".comment_like") ボタンが ajax 呼び出しから戻ってくる HTML 内にあると仮定しても安全ですか? その場合、jQuery の "on" バインディングが役立ちます。コンテンツが読み込まれるまで存在しないボタン自体にバインドする代わりに、イベント リスナーを、要素が最終的に含まれる可能性のあるコンテナーにバインドします。簡単に言えば、そのコンテナーでクリックが発生すると、jQuery はクリックされた要素をチェックして、一致するかどうかを確認し、ハンドラーをトリガーします。

読む: http://api.jquery.com/on/

このようにしてコンテンツを動的にロードできるようにするだけでなく、何百ものイベント ハンドラーがバインドされるのを防ぎます。

それに基づいて、代わりに

$(".comment_like").click(function() {...});

試す

$('#container').on('click','.comment_like',function() {...});

#container は、ロードする HTML を含むラッパーです。

于 2013-11-06T22:45:48.963 に答える