2017-03-14 2 views
2

저는 앵커 기본 동작을 방지하기 위해 on() JQuery 함수와 preventDefault()을 사용합니다. 나는 이해할 수 없다. off() JQuery 함수. 내가 대신 ('클릭 오프)'`사용할 수 있습니다 : 내 말은preventDefault()와 off ('클릭') 사이의 차이

$('.anchor').on('click',function(e){ 
    e.preventDefault(); 
}); 

, 나는 앵커의 기본 동작을 방지하기 위해 이것을 사용할 수 있습니다

$('.anchor').off('click'); 
+0

'끄기'추가 한 '클릭'이벤트 처리기를 사용 중지합니다. 'on' 디폴트 이벤트를 막을 수있는 새로운 이벤트 핸들러를 추가하십시오 (예 : href에서 링크가 열리지 않음) –

답변

1

아니, .off()의 문서에 따라 :

.off() 메서드는 .on()과 연결된 이벤트 처리기를 제거합니다.

따라서 off()은 jQuery에 의해 추가 된 핸들러 만 제거합니다. 그러나 기본 핸들러는 링크 또는 제출 버튼의 경우에는 preventDefault()으로 예방해야합니다.

1

꺼짐 : eventHandler를 비활성화하여 클릭시 기능을 수행 할 수 없도록합니다.preventdefault : 기본 eventHandler를 비활성화하지만 사용자 고유의 기능을 사용할 수 있습니다.

0

off은 이전에 첨부 된 이벤트 핸들러를 제거합니다.

하지만 당신은 하나의 선택에 여러 이벤트를 추가 할 수있는 요소

의 기본 동작을 멈추지 않을 것입니다. someOtherEvent은 (는) 요소에 연결된 다른 이벤트를 제거합니다 트리거 그래서 전에

$('somElem').on('click',function(){ 
    // rest of code 
}) 

$('somElem').on('someOtherEvent',function(){ 
    // rest of code 
}) 

예를

를 들어

.

+0

* tag *는 * element *와 같은 의미는 아닙니다. 후자는이 맥락에서 옳다. –

+0

동의합니다. 그것을 바로 잡았다. – brk

0

논리적으로 매우 다릅니다.

preventDefault()은 브라우저가 이벤트 비헤이비어에서 작동하지 않지만 JS 코드를 실행합니다. 예를 들어, 전송되지 않습니다 할 수있는 아래의 URL이 .anchor 요소 점에서, 그러나 JS 코드가 계속 실행됩니다 : 한편

$('.anchor').on('click',function(e){ 
    e.preventDefault(); 
    console.log('the browser wont redirect, but you will see this line in the console') 
}); 

off() 완전히 지정된 형태의 이벤트 핸들러에서 제거 요소. 이 경우 브라우저는 클릭시 지정된 URL로 전송되고 아무 JS 코드도 실행되지 않습니다.

$('.anchor').off('click');