Javascript 如何在jquery中使用.on从外部函数清除单击计数器?

Javascript 如何在jquery中使用.on从外部函数清除单击计数器?,javascript,jquery,Javascript,Jquery,我有一个带.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........ c

我有一个带.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;       
});
这不管用。
有没有办法从外部清除/重置第一个函数中的变量?

两个函数都可以访问变量countn。 我将所有内容都放在一个匿名函数中,因此只有两个click事件处理程序都可以访问该变量

(function () {
 var countn=0;
 $('#gallery').on('click', '.gon', function() {
  // increment countn
 });
 $('.teaserbox').click(function() {
  // reset countn
 });
})();

如果在这两个函数之外声明了
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;       
});
});

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

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

$('.teaserbox').click(function() {
    $('#gallery .gon').data('click_count', 0);
});
当然,您可以在使用
find()
的事件中使用
.triserbox
(函数中的
$(此)
)来查找正确的
.gon
元素,并仅重置该元素的计数


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

这方面没有单一的变量。每个
.gon
元素都有自己的点击计数器,存储在
数据(“点击计数”)
中。你想重置哪一个?这不起作用。我现在在上做了一个示例。多次单击fist div后重置并发出警报。Countn没有重置。怎么了?是你的额外变量countn造成的。您没有对变量进行压缩,但一般来说,我认为您应该决定只使用
.data()
var countn
,而不是两者的混合,这会造成问题。谢谢,但我不明白。我已经在这里测试过了,并删除了var countn。同样的行为。谢谢乔治,但这不起作用。下面是一个例子。重置后,警报将显示“0”。但再次单击第一个div计数器后,alert将显示第一个div上所有单击的总数。我想在重置后从“0”开始新的计数。有什么提示吗?