2013-03-15 180 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