-1

したがって、これらの 2 つのコード セグメントがあります。

$(".hideMessage").live("click", function(event) {
   $('.messageSuccess').hide("slow");
   return false;
});

setTimeout(function(){
   $(".messageSuccess").hide("slow") 
}, 10000);

基本的に、最初のセグメントはクリック.messageSuccessすると非表示になり、後で AJAX を介して生成した場合でも使用できます。.hideMessagelive().messageSuccess

2 番目のセグメントは、ユーザーが10 秒間リンクを.messageSuccessクリックしないと非表示になります。質問は、生成された AJAX を制御できるように、この 2 番目のセグメントでも.hideMessage使用するにはどうすればよいですか?live().messageSuccess

4

2 に答える 2

0

.messageSuccess作成時にタイムアウトを設定するには、新しい要素が追加されるたびに知る必要があります。最適なオプションは、新しい要素が追加されるたびにタイムアウトを設定するようにスクリプトを変更することです。ただし、これができない場合 (制御できないサードパーティ スクリプトなど)、新しい要素の存在を確認するためにポーリング間隔を設定する必要があります。

例えば:

setInterval(function(){
    $('div.messageSuccess').each(function(){
        var $this = $(this);
        if ($this.data('hideScheduled'))
            return;
        $this.data('hideScheduled', true);
        setTimeout(function(toHide){ toHide.hide('slow'); }, 10000, $this);
    });
}, 2000);

div.messageSuccessこのスクリプトは、新しい要素が出現してから 10 ~ 12 秒後に自動的に非表示にします。

于 2013-01-22T01:01:27.357 に答える
0

AJAX によって追加されたかどうかに関係なく、現在 DOM にある$(".messageSuccess")すべての要素を選択するため、その必要はありません。.messageSuccess

無関係なメモとして、jQuery 1.7+ を使用している場合は.live.on.

于 2013-01-22T01:02:30.727 に答える