【发布时间】:2013-05-20 22:21:19
【问题描述】:
我的目标是阻止所有点击事件(点击时隐藏/显示 HTML 中的元素),除非满足特定条件(用户在输入元素中有特定单词)。
所以我尝试将该逻辑添加到文档或“html”的点击处理程序中,但由于冒泡而首先触发了其他元素的点击处理程序。
所以我尝试将该逻辑附加到“*”,现在单击处理程序首先触发 - 但也将其传播到另一个元素,忽略 stopPropagation、preventDefault 并返回 false。
$(document).ready(function(){
$("*").click(function(event){
if ($("#user").val() !== "admin"){
console.log("1");
event.stopPropagation();
event.preventDefault();
return false;
}
});
$("#user").click(function(event){
console.log("2");
// do something
});
});
- 当由于返回 false/stopPropagation 而不应进一步传播时,为什么在“1”之后将“2”写入控制台?
- 我还能如何使用 jQuery 实现我的目标?
谢谢!
【问题讨论】:
-
$("*").click我的心跳漏了一拍。 -
如果你屏蔽了所有的点击事件,那么用户如何点击
user元素才能进入admin? -
@Barmar,焦点从用户开始,我不会让它去其他任何地方
-
@yair:不要忘记标签功能。
-
是的,我已经处理好了,谢谢 :)
标签: javascript jquery