2012-04-26 8 views
0

私は引用符を追加する簡単なアプリを持っており、見積もりを好きになる可能性があります(FBのようなものではありません)。 私は単純なdivを次の子とのボタンとして持っています:合計が好きなスパンとテキストがある段落です。いくつかのコンテンツがAJAXで読み込まれているので、.live()を使用する必要があります。 divをクリックしてもクリックできなくなったため、イベントのバインドを解除する必要があります。しかし、.live()では$(これ)を使うことができないので、私はevent.targetを使って作業しましたが、これにはいくつかの問題があります。jQuery unbind/dieライブイベント

マイHTML:

<div class="btnlike"> 
<span>0</span> 
<p>Click to vote</p> 
</div> 

(これまでのevent.targetと)私のJavascriptの

$(".btnlike").live('click',function(event){  

    var $target; 
    if($(event.target).is("div")) { 
     $target = $(event.target); 
    } else { 
     $target = $(event.target).parent(); 
    } 

    $target.unbind(event);  

}); 

しかし、私は.dieを(使用したい)が、$(これは)」doesnの理由他の解決策はありますか?

+1

'$(this)'はうまくいきませんか?私はそれが前に正常に使用されて見た。それはドキュメントにもあります。 – jeremyharris

+1

ライブは推奨されていません。代わりにon()を使用してください。 http://api.jquery.com/live/ –

+0

@JonathanSampson私は '$ .one()'をライブのような機能で使うことはできないと思います。 – jeremyharris

答えて

1

解決策の1つは、ライブ関数内のその要素で実行されたかどうかをチェックすることです。

$(".btnlike").live('click',function(event){  
    if ($(this).data('clicked')) { 
     // already ran it 
     return; 
    } 
    // mark it as being run 
    $(this).data('clicked', true); 
}); 
+0

私は理解しますが、どのボタンを「無効にする」(イベントを削除する)必要があるかを指定するにはどうすればよいですか? –

+0

イベントを削除する必要はありません。このイベントを再度クリックすると、実行中とマークされているため実行されないためです。 – jeremyharris

関連する問題