2013-04-04 82 views
0

我试图设置一个通知,只有当用户单击<a>标记3次才会触发。点击后触发jquery事件<a> 3次

要生成通知,我使用了一个名为fancybox的jQuery lightbox。

到目前为止,我已经有了fancybox所有的设置,但我不知道如何在标签上点击3次后才触发它。

任何想法,我会这样做?

我使用调用收藏夹JS是:

$(document).ready(function() { 
     $('.fancybox').fancybox(); 
    }); 

我设置一个jsFiddle to illustrate它。

+0

它是在第一页点击触发..: O – writeToBhuwan 2013-04-04 12:32:44

+0

是的,多数民众赞成在即时通讯有点麻烦,我希望它在3日点击触发 – sam 2013-04-04 12:33:24

回答

3

只要保持被点击的元素的次数曲目:

var clicked = 0; 

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

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

FIDDLE

+1

这只适用于第一次。之后,fancybox会在第一次点击时始终开启。我在调整代码的地方添加了一个答案。 – JFK 2013-04-04 17:56:40

0

您可以创建一个点击侦听器,并保存点击时更新的变量。

是这样的:

var clickCounter = 0; 
object.addEventListener('click', function() { 
    clickCounter++; 
    if (clickCounter == 3) { 
     //Open it 
    } 
}); 
1

您可以使用.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()的优点是计数绑链接本身,所以如果你碰巧有多个环节来跟踪没有杂乱试图跟踪哪些外部计数器与属于哪个链接。

+0

这只适用于第一次。之后,fancybox会在第一次点击时始终开启。 – JFK 2013-04-04 18:09:24

+0

这是一个简单的调整(只是使用'%') - 并不清楚它是每隔三次点击的问题。 – jmar777 2013-04-04 18:23:19

3

@ adeneo的答案是正确的如果你想要的功能第一次只有。有了这些代码,如果关闭fancybox,然后再次点击链接ONCE,fancybox会在第一次点击时触发。

如果你想要的是的fancybox后任何时间的3次点击ALWAYS射击,然后调整@ adeneo的代码是这样的:

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

forked JSFIDDLE

+0

一个简单的问题很好的答案。 +1 – writeToBhuwan 2013-04-05 08:27:36