2015-05-30 60 views
0

我遇到了jQuery的onmousedown奇怪的問題。我有一個插件,您可以向其中分配按鈕,並添加一些選項,比如:控制檯記錄器在一個mousedown上調用兩次

這種情況發生在這個插件
$.lollipopbutton(".buttons button", { 
    bubble_color: "rgba(0,0,0,1)" 
}); 

的一件事是,當你點擊按鈕,動畫會觸發。但是,我只想讓此動畫一次觸發x次。因此,我添加了選項maxClicks(出於測試目的,默認值= 10)。此外,每個按鈕得到一個jQuery的數據元素保留一個計數器的軌跡:

counter = $this.data("counter") || 0; 

我們就可以比較專櫃maxClicks選項:

if (counter <= args.maxClicks) {} 

,並把我們只是要執行的功能在某一時刻出現了兩次:

 if (counter <= args.maxClicks) { 
      // Do stuff 
      $this.data("counter", ++counter); 
      console.log(counter); 

      setTimeout(function() { 
       $this.children(".bubble:first").remove(); 
       if (!$this.children(".bubble").length) { 
        $this.data("counter", --counter); 
       } 
      }, totalTimeout); 
     } 
    }); 

但奇怪的是,console.log()每次點擊返回兩次,總是兩個連續的數字(如1 & 2,3 & 4,5 & 6等等)。

我嘗試了一切,但我無法找出問題所在。我在這裏錯過了什麼?插件(wip)可以在here in a fiddle找到。

回答

0

它被調用兩次,因爲您在lollipopbutton函數中附加了mousedown處理函數。你叫lollipopbutton

$.lollipopbutton(".buttons button", { 
    bubble_color: "rgba(0,0,0,1)" 
}); 

$.lollipopbutton(".buttons button.white", { 
    text_overlay: false 
}); 

這將附加mousedown處理兩次

+0

我以爲我測試過它,顯然我沒有..謝謝。任何想法如何繞過這個問題? –

+1

@BramVanroy,爲什麼沒有在mousedown處理程序之外初始化lollipopbutton? – AmmarCSE