2013-08-07 4 views
2

제 질문은 this question과 비슷합니다. 이벤트 네임 스페이스를 사용할 때 프록시 메서드가 없어도 네임 스페이스가 표시되지 않습니다.이벤트 네임 스페이스가 jquery와 함께 표시되지 않습니다.

더 자세히

$(document).ready(function(){ 
    $("p").on("click.someNamespace",function(event){ 
    console.log(event.namespace); 
    }); 
    $("button").click(function(){ 
    $("p").off("click.someNamespace"); 
    }); 
}); 

HTML

<p>Get the click's namespace</p> 
<button>Remove the click event</button> 

JS : http://codepen.io/ShawnHuang/pen/zaHui

가 다른 코드에 성공,하지만 난 두 코드 사이의 차이점에 대해 알고하지 않습니다. click this

답장을 보내주세요 !! documentation와 예를 바탕으로

답변

2

당신은 사용할 수 있습니다 http://jsfiddle.net/ZHp67/

event.handleObj.namespace는 확실하지 그것을 공개적으로 지원됩니다.

업데이트 : 관련 DOC 여기에서 찾을 수 있습니다 https://learn.jquery.com/events/event-extensions/#the-handleobj-object

+0

오 !! 네임 스페이스가 있습니다! 더 많은 질문은 내 코드와 w3school 예제가 다른 점입니다. 주먹 하나는 event.namespace, 으로 네임 스페이스를 얻을 수 있지만 두 번째 것은 event.handleObj.namespace로 네임 스페이스를 얻을 수 있습니다. –

+1

특정 이벤트 (네임 스페이스 사용)를 트리거 할 때 속성 네임 스페이스가 이벤트 객체에 설정됩니다. 이벤트의 handleObj 속성은 모든 경우에이 속성이 설정된 것으로 보입니다. 이벤트를 직접 처리하는 것이 아니라 이벤트를 처리하는 객체와 관련이 있기 때문입니다. 이것은 내가 어떻게 그것을 이해하는지 그리고 여기에 DOC가 없기 때문에 나는 단지 여기에 추측한다 –

+0

@Shawn : 이미 말했듯이, w3school 예제에서는'.trigger' :'$ (this) .trigger ("custom. someNamespace ");'. –

2

, 나는 event.namespace 이벤트가 .trigger 수동으로 트리거와 네임 스페이스를 포함 된 경우에만 정의되어 있는지 말할 것 : 주로 플러그인 저자

이 가능성이 사용됩니다 사람 사용 된 이벤트 네임 스페이스에 따라 다르게 작업을 처리하려고합니다.

$("p").trigger("test.something"); 

"정상적인"마우스 클릭

는 특정의 네임 스페이스에 바인드되지 않습니다. 또한 w3schools 예에서 .trigger을 사용하고 있음을 볼 수 있습니다.

+0

내가 코드의 동작을 확인, 그것이 성공이다. Im은 변수 "namespace"를 찾을 수 없다는 것을 혼란에 빠뜨렸습니다. jquery가 click 이벤트에서 정의하지 않았을 수 있습니까? –

+0

내가 말했듯이,'event.namespace'는 이벤트가'.trigger'로 프로그램 적으로 트리거 된 경우에만 정의됩니다. –

관련 문제