0

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

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

        });

}
4

3 回答 3

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 项操作。

于 2013-03-15T04:05:08.073 回答
0

看看 jQuery.dblclick()会有很大帮助。

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

于 2013-03-15T03:52:30.587 回答
0

你在寻找类似的东西

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

var clicked = false;

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

        clicked = !clicked;
}
于 2013-03-15T04:02:31.830 回答