4 回答 4

3

只需跟踪元素被点击的次数:

var clicked = 0;

$('.fancybox').on('click', function (e) {
    clicked++;

    if (clicked >= 3) {
        clicked = 0;
        $('.fancybox').fancybox();
    } else {
        e.preventDefault();
    }
});

小提琴

于 2013-04-04T12:30:33.203 回答
3

@adeneo 的答案是正确的,如果您只需要第一次使用该功能。使用该代码,如果您关闭fancybox,然后再次单击链接一次,fancybox 将在第一次单击时触发。

如果您想要的是 fancybox 总是在 3 次点击后随时触发,然后以这种方式调整 @adeneo 的代码:

$(document).ready(function () {
    var clicked = 0;
    $('.fancybox').on('click', function (e) {
        clicked++;
        if (clicked >= 3) {
            clicked = 0;
        } else {
            return false;
        }
    }).fancybox();
});

请参阅分叉的 JSFIDDLE

于 2013-04-04T17:55:15.130 回答
2

您可以.data()用来跟踪:

$(document).ready(function() {
     $('.fancybox').click(function(e) {
        e.preventDefault();
        var $this = $(this),
            count = ($this.data('click-count') || 0) + 1;
         if (count === 3) {
             $('.fancybox').fancybox();
         }
         $this.data('click-count', count);
     });         
});

演示:http: //jsfiddle.net/XWHga/3/

使用的优点.data()是计数与链接本身相关,因此,如果您碰巧有多个链接来跟踪,那么尝试跟踪哪些外部计数器属于哪些链接就不会很麻烦。

于 2013-04-04T12:33:42.533 回答
0

您可以创建一个单击侦听器并保留一个在单击时更新的变量。

像这样的东西:

var clickCounter = 0;
object.addEventListener('click', function() {
    clickCounter++;
    if (clickCounter == 3) {
        //Open it
    }
});
于 2013-04-04T12:30:27.113 回答