我尝试使用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
}
);
我不确定从何处开始,因为当我记录事件对象时,名称空间无处可寻。
提前致谢!
答案 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");
}