在jQuery中检测非命名空间事件

时间:2017-05-04 21:38:03

标签: javascript jquery events namespaces javascript-namespaces

我尝试使用jQuery' on仅检测未命名的事件

我尝试在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 个答案:

答案 0 :(得分: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/