2013-04-09 1 views
0

이 같은 CSTE 연구진은()로 함수를했습니다 :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는 클릭 수를 계산할 변수입니다. 이 작동하지 않는

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

: 지금 내가 좋아하는이 함수의 외부에서 "countn"를 지우거나 다시 설정합니다. 외부에서 첫 번째 기능을 삭제/재설정하는 방법이 있습니까?

+0

여기에는 단일 변수가 없습니다. 각'.gon' 엘리먼트는'data ("click_count")'에 저장된 자체의 클릭 카운터를 가지고 있습니다. 어느 쪽을 재설정 하시겠습니까? – Barmar

답변

2

는 클릭과 countn가 전에 그 범위에 정의되지 않은 이후 리셋 기능에서 변수 countn를 재설정하면 아무 작업도 수행되지 않습니다.

둘 이상의 .gon 요소가 #gallery에 포함되어 있는지 잘 모르겠지만 실제로는 재설정 만 할 수 있습니다. 이것은 당신은 물론 사용할 수있는이

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

처럼 이루어집니다 .teaserbox 올바른 .gon 요소를 발견하고 해당 요소 만 카운트를 재설정 find()와시 (기능에 $(this) 될 것이다).

함수에있는 var 문을 잊어 버리는 또 다른주의 사항은 암시 적으로 변수를 선언하면 모든 종류의 문제가 발생하기 때문에 중요합니다.

+0

이것은 작동하지 않습니다. 이제 [jsfiddle] (http://jsfiddle.net/actree/pNkMM/18/)에서 예제를 만들었습니다. fist div를 몇 번 클릭 한 후 재설정 및 경고. Countn은 재설정되지 않습니다. 뭐가 문제 야? –

+0

countn이라는 추가 변수가 원인입니다. 당신은 변수를 초기화하지 않고 있지만, 일반적으로'.data()'나'var countn' 만 사용하도록 결정해야합니다. –

+0

고마워요,하지만 이해가 안되네. 나는 여기에서 [jsfiddle] (http://jsfiddle.net/actree/pNkMM/25/)을 테스트했고 var countn을 제거했다. 같은 행동. –

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

고르시오 (Giorgio) 감사합니다. 그러나 이것은 작동하지 않습니다. [JSFIDDLE] (http://jsfiddle.net/actree/pNkMM/28/)의 예가 있습니다. 재설정 후 경고는 "0"으로 표시됩니다. 그러나 첫 번째 div 카운터를 다시 클릭하면 첫 번째 div에 대한 모든 클릭의 총계가 표시됩니다. 재설정 후 "0"부터 새 카운트를 시작하고 싶습니다. 어떤 힌트? –

관련 문제