0

은 jQuery의 on 이벤트에서 네임 스페이스가 아닌 이벤트 만 감지하려고합니다. jQuery에서 비 네임 스페이스가있는 이벤트 감지

나는 다음과 같이 on의 콜백 내에서 네임 스페이스를 확인했지만, 그것은 항상 정의되지 않은 것 : 나는 또한 어떤을 배제하기 위해 이벤트 이름은 ". $"추가 할 수 있습니다 읽었습니다

$(".selector").on(
    "click", 
    function (e) { 
     console.log(e.namespace); // Undefined, not "mynamespace" 
    } 
); 

$(".selector").trigger("click.mynamespace"); 

네임 스페이스가 있지만 trigger 내에 만 적용되고 on에는 적용되지 않는 것으로 보입니다. 이벤트가 네임 스페이스 경우에도 다음 실행이 :

$(".selector").on(
    "click.$", 
    function (e) { 
     // runs even when triggered with a namespace 
    } 
); 

내가 이벤트 객체를 로그인 할 때부터 여기에서 갈 곳 확실하지 않다, 네임 스페이스는 어디에도 발견되지 않는 것입니다.

미리 감사드립니다.

답변

1

handleObj를 통해 액세스 해보십시오.

HTML :

<div class="selector"> 
    BOX 
</div> 
<button onclick="clickWithNamespace()">with ns</button> 
<button onclick="clickWithoutNamespace()">without ns</button> 

JS : 대답에 대한

$(".selector").on(
    "click.mynamespace", 
    manageClick 
); 
$(".selector").on(
    "click", 
    manageClick 
); 
function manageClick(event) { 
    console.log(event.handleObj.namespace); 
    $(".selector").text(event.handleObj.namespace); 
} 

function clickWithNamespace() { 
    $(".selector").trigger("click.mynamespace"); 
} 


function clickWithoutNamespace() { 
    $(".selector").trigger("click"); 
} 

https://jsfiddle.net/j52rmxrs/15/

+0

감사합니다! 불행하게도이 코드는 네임 스페이스없이 트리거되었을 때도 네임 스페이스가 "mynamespace"라고 항상 말합니다. 이벤트가 ** 네임 스페이스가 아닌지를 감지하는 것이 목표이기 때문에 이것은 문제입니다. 즉, 코드에서 수행하는 작업을 수행해야하지만 on의 첫 번째 인수에서 ".mynamespace"가 필요하지 않습니다. 말이 돼? – Randy

+0

달성하고자하는 내용으로 jsfiddle 링크를 업데이트했습니다. 내일 예에서도 코드를 업데이트 할 예정입니다. 전화로 죄송합니다. 전화로 스택 및 jsfiddle을 사용하여 20 분이 걸렸습니다. – quirimmo

+0

도 코드를 업데이트했습니다. – quirimmo