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

How to clear click counter from outside function with .on in jquery?

本文关键字:函数 从外部 清除 计数器 on jquery      更新时间:2023-09-26

我有一个函数。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是计算点击次数的变量。现在我想从这个函数外部清除或重置"count",比如:

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

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

count值被存储为点击对象上的数据,在重置函数中重置变量countn没有任何作用,因为countn之前没有在该作用域中定义。

我不知道你是否在#gallery中有多个.gon元素,但如果你这样做,你真的只能重置它们。就像这样

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

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

另一个注意事项,你忘记了你的var语句在你的函数,这是重要的,因为隐式声明变量会导致各种各样的问题。

变量count应该可以从两个函数中访问。我把所有东西都放在一个匿名函数中,所以只有两个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;       
});
});