提问人:Randy 提问时间:5/5/2017 更新时间:5/5/2017 访问量:80
在 jQuery 中检测非命名空间事件
Detecting a Non-Namespaced Event in jQuery
问:
我正在尝试仅使用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赞
quirimmo
5/5/2017
#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赞
Randy
5/5/2017
谢谢你的回答!不幸的是,该代码总是说命名空间是“mynamespace”,即使它是在没有命名空间的情况下触发的。这是一个问题,因为目标是检测事件何时没有命名空间。换句话说,我需要它来执行您的代码所做的事情,但在第一个参数中没有“.mynamespace”。这有意义吗?on
0赞
quirimmo
5/5/2017
更新了 jsfiddle 链接,其中包含您想要实现的目标。明天我也会更新示例中的代码。对不起,我现在通过电话,我花了 20 分钟通过电话使用 stack 和 jsfiddle
评论