Javascript 如何在jquery中使用.on从外部函数清除单击计数器?
我有一个带.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
$('#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”开始新的计数。有什么提示吗?