2012-04-26 15 views
0

我有一個簡單的應用程序來添加報價和喜歡報價(不像FB)的可能性。 我有一個簡單的div作爲一個按鈕與以下的孩子:一個跨度與總喜歡和一段文字。我需要使用.live(),因爲有些內容是使用AJAX加載的。我需要解除綁定/死亡事件,因爲一旦你點擊div就不能再點擊了。但是因爲使用.live()你不能使用$(this)我嘗試使用event.target,但是這有一些問題。jQuery解除綁定/死亡現場活動

我的HTML:

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

我的JavaScript(到目前爲止與event.target)

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

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

    $target.unbind(event);  

}); 

但我想用.die(),而是因爲$(這)沒有按」有沒有其他解決方案?

+1

你確定'$(this)'不起作用嗎?我以前見過它成功使用過。甚至在文檔中。 – jeremyharris 2012-04-26 16:52:14

+1

請注意,Live已過時。用()代替。 http://api.jquery.com/live/ – 2012-04-26 16:59:06

+0

@JonathanSampson儘管如此,我不認爲你可以使用'.one()'和類似live的功能。 – jeremyharris 2012-04-26 16:59:38

回答

1

解決方法之一就是檢查它是否在live函數中的該元素上執行。

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

我明白了,但是我怎樣才能指定哪個按鈕需要「禁用」(移除事件)? – 2012-04-26 17:05:12

+0

在這種情況下,您不需要刪除事件,因爲再次單擊它將不會執行,因爲它已被標記爲正在運行。 – jeremyharris 2012-04-26 17:14:25