2011-12-23 4 views
-3

가능한 중복 : 클릭이 있다는되면 그래서 그것을 만들고 싶어은 더블 클릭을 해제 .live

$('.answerx').live('click', function(){ 
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
}) 

:


is there a way to force event to fire only once on given element (per element, not whole document) when using live()?

내 코드입니다 한 번 이상 실행되는 함수가 내 프로그램을 미쳐 버리므로 사용자는 다시 함수를 클릭하고 실행할 수 없습니다.

그래서 그것을 만들 수있는 방법이 그래서는 id가 $(this).attr('id')

답변

3

당신과 같은 클릭 개체를 표시 할 수있는 특정 요소에 더 클릭을 비활성화하면 클릭 한 후. 이를 수행하는 데는 여러 가지 방법이 있습니다. 예를 들어, 클래스를 추가하십시오.

$('.answerx').live('click', function(){ 
    if(!$(this).hasClass('disabled')) { 
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
    $(this).addClass('disabled'); 
    } 
}) 

클래스 추가의 추가 이점은 비활성화 된 요소를 각각 스타일을 지정할 수 있다는 것입니다.

+0

를 사용하지, 이것은 해당 적용됩니다 클릭 한 사람 ?? – Jake

+0

이것은 맞습니다. –

+0

이 대답이 도움이된다면, 그것을 받아 들여야합니다 :-) –

1

간단하게 :

var boolHasBeenRun = false; 
$('.answerx').live('click', function(){ 
    if(boolHasBeenRun === false){ 
     comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
     boolHasBeenRun = true; 
    } 

}); 

또는

$('.answerx').live('click', function(){ 
     comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
     $('.answerx').die('click');   

}); 

을 정도에 상관없이 내가 .answerx에 얼마나 많은 요소 현대 .off()

+1

'unbind '는 여기서 작동하지 않습니다. 'bind'로 바인드 된 이벤트 핸들러 만 바인드 해제합니다. –

+0

감사합니다. –

+0

그리고 'die'의 문제점은 클릭 한 것뿐만 아니라 모든 요소에 대한 이벤트 핸들러를 제거한다는 것입니다. –

관련 문제