JQuery - 如何在单击两次时运行此函数一次

时间:2013-03-15 03:49:45

标签: jquery html

当我在按钮元素上单击两次(不是双重clikcing,只是在任何时间点击两次)时,我试图让这个函数运行一次,初始化它然后重置它。< / p>

<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
            }

        });

}

3 个答案:

答案 0 :(得分:2)

首先,你不应该像这样使用内联事件处理;只是让锚点裸露:

<a href="#">

然后,使用jQuery附加click处理程序:

$('.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。

答案 1 :(得分:0)

看一下jQuery .dblclick(),它会有很多帮助。

  

描述:将事件处理程序绑定到“dblclick”JavaScript事件,或在元素上触发该事件。

答案 2 :(得分:0)

你在寻找像

这样的东西吗?
$('.challenge_popover').popover();

var clicked = false;

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

        clicked = !clicked;
}