首先感谢您的考虑。
我有一个带有包装器(容器)的html文档。我想这样做,以便当有人点击页面的主体部分时,它们被重定向到xxx,但如果他们点击包装器(页面的内容),它们就不会被重定向。我已经尝试了所有东西,但$('body')的jquery选择器选择了身体内部的所有东西,我似乎不明白如何选择#wrapper中没有的东西。 我正在尝试这样的事情:
$('*').not('#wrapper').click(function(){
window.location = 'http://www.example.com/example-page';
});
没有运气,
谢谢你们
亚历_
答案 0 :(得分:2)
由于事件冒出来,您应该能够将点击事件附加到包装器上,以取消泡泡到身体。之后,您可以将click事件附加到body元素以重定向到您需要的位置。这只会将点击事件绑定到2个元素。
$("#wrapper").click(function(){
return false;
});
$("body").click(function(){
console.log("body click");
});
答案 1 :(得分:1)
$('*').not('#wrapper').click(function(){
window.location = 'http://www.merkados.com/quote-request';
});
会将事件绑定到除#wrapper之外的所有元素。所以,如果您的HTML是
<div id="anotherdiv"><div id="wrapper">adsads</div></div>
#anotherdiv
会收到点击广告。您可以将stopPropagation()用于事件
答案 2 :(得分:1)
stopPropagation()是否适用于IE风格?也许,最后使用旧的“返回假”会阻止事件进入其他地方。
此外,一些奇怪的代理检查 - 已经可用于JQuery-应该这样做。 (如果是MSIE,那么
event.cancelBubble = true;
否则,请使用stopPropagation方法
event.stopPropagation();
)
答案 3 :(得分:0)
可能是这样的......
$(document).click(function(e){
var el = $(e.target);
if (
(!$(el).is('#wrapper') ) &&
$(el).closest('#wrapper').length === 0
) {
window.location.href = 'http://msn.com';
}
});
没试过。我根本不会推荐这种,这种侵入性和奇怪的行为。
答案 4 :(得分:0)
我想你想用这个:
$(':not(#wrapper)').click(function(){
window.location = 'http://www.example.com/example-page';
});
答案 5 :(得分:0)
我做到了! 非常感谢你睁开我的眼睛!你们做到了! 这是最终的代码:
$(':not(#wrapper)').click(function(event){
if($(this).hasClass('cl')) {
window.location = 'http://www.example.com/example-page';
}
event.stopPropagation();
});
你可以看到我做的是我只在身体上添加了一个课程。 stopPropagation基本上停止来自#wrapper的调用,所以它基本上只适用于具有cl而不是#wrapper的身体的任何部分。
再次感谢,你们摇滚!!
答案 6 :(得分:-1)
也许尝试使用过滤功能。它允许您从元素集中去除不需要的结果。