当用户使用jQuery单击页面上的空白区域时,我正在尝试捕获事件。例如,假设您有以下内容:
<html>
<head>
<title>Test</title>
</head>
<body>
<p>Here's some text!</p>
<body>
</html>
当用户点击除之外的任何内容时,我想抓住该事件。
有没有办法捕捉这样的东西?
答案 0 :(得分:4)
这似乎有效:
$(function() {
$('body').click(function() {
alert('clicked the page');
return false;
});
$('*:not(body)').click(function() {
alert('clicked an item!');
return false;
});
});
您将遇到的一个“问题”是段落默认是块元素,因此即使看起来您没有点击某个项目,单击句子的一侧也会产生项目点击。
答案 1 :(得分:3)
这适用于chrome。没试过其他浏览器。解决了stickmangumby的想法:
$('body').click( function (e) {
if ( e.target == this )
alert('works');
});
答案 2 :(得分:3)
我正在寻找类似问题的解决方案 - 在单击文档时隐藏自定义工具提示,但在单击提示内部时则不会。我是这样做的(改变选择器以匹配问题):
$(document).bind('click', function(e) {
if($(e.target).closest('p').length == 0) {
//p is not clicked. do your stuff here
}
});
答案 3 :(得分:2)
您可以观察onclick的文档,然后检查事件处理函数中的event.currentTarget。
答案 4 :(得分:1)
我正在制作一个小型的网络应用程序 类似于Taskpaper(适用于Mac)和 我希望它能模仿应用程序 行为。更多的概念证明 比什么都重要
根据你的评论,我不会特别担心身体。而是连接一个div,以便您可以约束您想要对事件做出反应的区域。在页面上没有其他元素的情况下,它是相同的。
对于它的价值,在任何网页上,如果点击任何地方的任何空白,你的用户会讨厌你 - 这将是一个糟糕的用户界面体验。
答案 5 :(得分:0)
你可以这样做(我认为)
$('body').not('p').click(function(){});
不确定它的效果如何。
答案 6 :(得分:0)
我不确定,但是尝试一下。
$('html').on('click',function(event){
if(event['target'].tagName =='HTML'){
//do stuff;
}
})