Jquery不是选择器问题

时间:2009-12-21 20:31:11

标签: jquery xhtml jquery-selectors

首先感谢您的考虑。

我有一个带有包装器(容器)的html文档。我想这样做,以便当有人点击页面的主体部分时,它们被重定向到xxx,但如果他们点击包装器(页面的内容),它们就不会被重定向。我已经尝试了所有东西,但$('body')的jquery选择器选择了身体内部的所有东西,我似乎不明白如何选择#wrapper中没有的东西。  我正在尝试这样的事情:

$('*').not('#wrapper').click(function(){
            window.location = 'http://www.example.com/example-page';
        });

没有运气,

谢谢你们

亚历_

7 个答案:

答案 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)

也许尝试使用过滤功能。它允许您从元素集中去除不需要的结果。

http://docs.jquery.com/Traversing/filter