2013-04-09 23 views
0

我有一個函數。對()這樣的:如何清除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........ 

COUNTN是計算點擊次數的變量。 現在我想從這個函數像外界清除或重「COUNTN」:

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

這是行不通的。 有沒有辦法從外部清除/重置變量insde第一個函數?

+0

對此沒有單一變量。每個'.gon'元素都有自己的點擊計數器,存儲在'data(「click_count」)'中。你想重置哪一個? – Barmar 2013-04-09 20:37:18

回答

2

的計數值被存儲爲對象數據點擊並在復位功能復位變量countn確實因爲COUNTN不在該範圍之前定義什麼。

我不知道你是否在#gallery中有多個.gon元素,但是如果你真的只能重置它們全部。這是這樣

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

做,當然你可以使用.teaserbox(這將是在功能$(this))與find()事件找到正確的.gon元素和僅重置計數該元素。

在另一個說明中,您忘記了函數中的var語句,這很重要,因爲隱式聲明變量會導致所有類型的問題。

+0

這是行不通的。我現在在[jsfiddle](http://jsfiddle.net/actree/pNkMM/18/)做了個例子。重新點擊拳擊div後重置並提醒一些時間。 Countn不會重置。怎麼了? – 2013-04-10 11:11:18

+0

您額外的變量countn造成這種情況。你不會重置變量,但總的來說,我認爲你應該決定只使用'.data()'或'var countn',而不是兩者混合,這會導致問題。 – 2013-04-10 11:24:41

+0

謝謝,但我不明白。我已經在這裏測試了[jsfiddle](http://jsfiddle.net/actree/pNkMM/25/)並將var countn移除。同樣的行爲。 – 2013-04-10 12:17:19

0

變量countn應該可以從兩個函數中訪問。 我把所有的東西放在一個匿名函數中,所以只有兩個單擊事件處理程序都可以訪問這個變量。

(function() { 
var countn=0; 
$('#gallery').on('click', '.gon', function() { 
    // increment countn 
}); 
$('.teaserbox').click(function() { 
    // reset countn 
}); 
})(); 
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;  
}); 
}); 
+0

謝謝喬治,但這不起作用。這裏是[JSFIDDLE]的一個例子(http://jsfiddle.net/actree/pNkMM/28/)。重置後,警報將顯示「0」。但是再次點擊第一個div計數器後,alert會顯示第一個div的所有點擊總數。我想在復位後從「0」開始新的計數。任何提示? – 2013-04-10 12:36:10