0

我有一个带有 .on() 的函数,如下所示:

$('#gallery').on('click', '.gon', function() {   
    countn = ($(this).data("click_count") || 0) + 1;
    $(this).data("click_count", countn);
    // set up for first move
    if ( countn == 1 ) {
         do something........

countn 是计算点击次数的变量。现在我想从这个函数之外清除或重置“countn”,例如:

$('.teaserbox').click(function() {    
    countn = 0; 
    return false;       
});

这行不通。有没有办法从外部清除/重置第一个函数中的变量?

4

3 回答 3

2

计数值存储为单击对象上的数据,并且countn在重置函数中重置变量没有任何作用,因为之前未在该范围内定义 countn。

我不知道您是否有多个.gon元素#gallery,但如果有,您真的只能将它们全部重置。这样做是这样的

$('.teaserbox').click(function() {
    $('#gallery .gon').data('click_count', 0);
});

您当然可以在事件中使用.teaserbox(将$(this)在函数中)find()找到正确的.gon元素并仅重置该元素的计数。

另一方面,您忘记var了函数中的语句,这很重要,因为隐式声明变量会导致各种问题。

于 2013-04-09T20:37:58.870 回答
0

变量 countn 应该可以从两个函数中访问。我把所有东西都放在一个匿名函数中,所以只有两个 click 事件处理程序才能访问该变量。

(function () {
 var countn=0;
 $('#gallery').on('click', '.gon', function() {
  // increment countn
 });
 $('.teaserbox').click(function() {
  // reset countn
 });
})();
于 2013-04-09T20:34:25.107 回答
0

如果countn在两个函数之外声明,您应该能够做到。所以像:

$(document).ready(function() {

var count = 0;

$('#gallery').on('click', '.gon', function() {   
countn = ($(this).data("click_count") || 0) + 1;
$(this).data("click_count", countn);
// set up for first move
if ( countn == 1 ) {
do something........
}

$('.teaserbox').click(function() {    
countn = 0; 
return false;       
});
});
于 2013-04-09T20:35:12.373 回答