2013-03-15 106 views
0

我試圖讓這個函數運行一次,當我點擊兩次按鈕元素兩次(不是雙重clikcing,只需在任何地方點擊兩次時間點),將其初始化,然後重置。JQuery - 如何讓這個函數運行一次點擊兩次

<a href="#" onclick="popHover()"> 

$('.challenge_popover').popover() 

var clicked = false 

function popHover() { 

     // I NEED THIS PART TO RUN ON THE FIRST CLICK 
     if (clicked == false) 
     { 
     $('.challenge_popover').popover('destroy') 
     } 

     // AND THIS PART TO RUN ON THE SECOND CLICK 
     $(document).live('mousedown', function(e) { 

      if (e.which == 1) 

      { 
      $('.challenge_popover').popover() 
      clicked = true 
      } 

     }); 

} 
+1

你是什麼意思通過點擊兩次?雙擊或兩次點擊?另外,每次調用popover()時都註冊了mousedown事件處理程序。 – 2013-03-15 03:54:29

+0

兩次點擊。在任何時間點擊該元素。 – 2013-03-15 03:58:32

+0

仍含糊不清。你的意思是'.one()'只是第一次發生什麼事情,或者'on('dblclick')'應該解釋它本身? – Popnoodles 2013-03-15 03:58:37

回答

2

首先,你不應該使用內聯事件處理這樣的;剛剛離開主播裸:

<a href="#"> 

然後,使用jQuery附上點擊處理程序:

$('.challenge_popover') 
    .popover() 
    .on('click', popHover) 

接下來,點擊事件處理程序:

function popHover() 
{ 
    // we keep the clicked state on the element itself 
    var clicked = $(this).data('clicked'); 

    if (!clicked) { 
     // action #1 
     $(this).popover('destroy') 
    } else { 
     // AND THIS PART TO RUN ON THE SECOND CLICK 
     $(this).popover(); 
    } 
    // toggle clicked state 
    $(this).data('clicked', !clicked); 
} 

我不知道是什麼發生在第三次點擊;我認爲它應該再次採取行動#1。

0

看看jQuery的.dblclick(),將有很大的幫助。

說明:將事件處理程序綁定到「dblclick」JavaScript事件,或者在元素上觸發該事件。

0

你在尋找類似

$('.challenge_popover').popover(); 

var clicked = false; 

function popHover() { 
     if (clicked) { 
      $('.challenge_popover').popover('destroy') 
     } else { 
      $('.challenge_popover').popover() 
     } 

     clicked = !clicked; 
} 
+0

沒有嘗試過,但我認爲它會奏效。只是傑克的方法比我原先設想的更好。 – 2013-03-15 04:15:26

+0

@PinkiePie雅,那個更酷 – 2013-03-15 04:18:09

相關問題