2013-04-21 118 views
2
var times = 0; 
jQuery(window).load(function(){ 
    $(".banana").click(function(){ 
    console.log(times); 
    times++; 
    if(times == 3){ 
     $("#b1").unbind('click'); 
    } 
    if(times == 6){ 
     $("#b1").bind('click'); 
    } 
    }); 
}); 

和HTML代碼:
img id="b1" src=".../" class="banana"
img src=".../" alt="" class="banana"禁用並啓用div事件處理程序點擊jQuery?

我已經前面的例子,當我嘗試啓用格事件處理程序點擊。但它不幹活看了一些主題,比如我它不能解決問題。請幫助我?

+0

我沒有一個解決方案,但這個問題似乎是與綁定功能,因爲其它功能如預期進行操作: http://jsfiddle.net/NotInUse/YQFwz/2/ – Scott 2013-04-21 17:34:02

回答

1

你忘了爲類(選擇的點應該是$('.banana')

var times = 0; 
jQuery(window).load(function(){ 
    $(".banana").click(function(){ 
    console.log(times); 
    times++; 
    if(times == 3){ 
     $("#b1").unbind('click'); 
    } 
    if(times == 6){ 
     $("#b1").bind('click'); 
    } 
    }); 
}); 
+1

thnk.But它不起作用,因爲當'times'達到** 6時我想啓用'click .b1' ** – haind 2013-04-21 16:53:39

+0

啊是的..你的其他選擇器也是錯誤的:)應該是'#'而不是''',因爲b1是'id' – Kaloyan 2013-04-21 16:56:36

+0

是的。我糾正了錯誤,但當'times'達到** 3時'div'被'禁用' *但在達到** 6時無法啓用** ** – haind 2013-04-21 17:04:01

0

這不是回答你的問題,但在你的代碼一點點建議。

使用「文件準備的「,而不是負載。

$(window).load(function(){... 

替換

$(document).ready)function(){... 

他們都會爲你工作,但有細微的差異。 「準備就緒」會在加載頁面結構之後立即將事件綁定到元素,但仍然在加載內容之前。

$(window).load()將等待所有內容被加載。這包括圖像。

+0

我使用'$(window).load(function(){...',因爲有時候我想要在點擊圖片之前加載所有圖片 – haind 2013-04-21 17:08:35

+0

結構是loaeded的,意思是圖片標籤在那裏,只是圖片不是如果沒有任何圖像,那麼我在哪裏點擊以...例如,淡入淡出圖像。我們如何能夠將文檔上的事件綁定到「img」-tag – Daniel 2013-04-21 17:46:26

+0

我不明白。是嗎? – haind 2013-04-21 18:07:52

1

你想要的是防止可怕的堆棧點擊事件。有不同的處理方法,但基本上它們都是以設置布爾值爲準。

在你的例子中,我已經爲你的#choices容器設置了一個data()標籤,以false的值開始。點擊後,我將布爾值更改爲true。基本上,如果processing=false我在點擊回調中執行代碼。

$("#choices").data('processing', false); 

    $("#rock").click(function() { 
     if (!$(this).parent().data('processing')) { 
      $(this).parent().data('processing', true); 
      user = roPaSc[0]; 
      gamePlay(); 
     } 

    }); 
    $("#paper").click(function() { 
     if (!$(this).parent().data('processing')) { 
      $(this).parent().data('processing', true); 
      user = roPaSc[1]; 
      gamePlay(); 
     } 
    }); 
    $("#scissors").click(function() { 
     if (!$(this).parent().data('processing')) { 
      $(this).parent().data('processing', true); 
      user = roPaSc[2]; 
      gamePlay(); 
     } 
    }); 

動畫後,布爾值需要重置。我在「else語句」中的openEyes函數中執行此操作。

else { 
      $("#you").attr({ 
       'src': user 
      }); 
      $("#computer").attr({ 
       'src': com 
      }); 
      $("#choices").data('processing', false); 
     } 

這裏是「剪刀,石頭,布」的調整小提琴:http://jsfiddle.net/gpxxn/2/

+0

thnks'丹尼爾'爲上面的例子,但他們不是我在找什麼。就像主題的名稱,我只想知道如何禁用和啓用** div **,當我點擊。難以解釋。這是所有我認爲與**搖滾,紙張,剪刀**遊戲:http://jsfiddle.net/haind/gpxxn/ – haind 2013-04-22 03:11:29

+0

但我有doubleClick或三次點擊岩石,紙張,剪刀時遇到麻煩可以運行2到3次,做相同的事情。我想在顯示結果之前,點擊div應該被禁用,當顯示結果時啓用 – haind 2013-04-22 03:21:36