jquery忽略子元素

时间:2011-07-19 14:46:10

标签: javascript jquery html dom

嗨,我有一个带有嵌套div的div标签,如下所示

<div class="friendRequestMenu" id="friendRequestMenu">
    <div class="toolbarTitle">
        <span>Friend Requests</span> <a href="javascript:void(0)" class="hyperlink">Find Friends</a>
    </div>
    <div id="friendRequestData">
        <!-- put div class=requestli to see a block-->
        <div class="no-request">
            No New Friend Requests
        </div>
        <a href="javascript:void(0)">
            <div class="see-all-requests">
                See All Requests
            </div>
        </a>
    </div>
</div>

的javascript:

$('*').each(function() {   /getting all elements in document
  // do something for all elements except the div tag above
});

我希望代码能够应用除div标签及其子代之外的所有内容,我知道我可以获取所有id并添加异常,但我想只使用父标签 谢谢 编辑:

嗨,这正是我想做的事情

$(document.body).find('*:not(#friendRequestMenu):not(#friendRequestMenu *)').each(function () {

    var clientWidth = $(window).width();
    var clientHeight = $(window).height();
    var heightPercent = ($(this).height() / clientHeight) * 100;
    var widthPercent = ($(this).width() / clientWidth) * 100;
    $(this).css('height', heightPercent.toString());
    $(this).css('width', widthPercent.toString());


    });

但是我想忽略一些元素,因为你可以看到选择器部分代码对我不起作用

3 个答案:

答案 0 :(得分:5)

$('*:not(#friendRequestMenu):not(#friendRequestMenu *)').each(...);

使用:not()选择器应该很好地处理它。

答案 1 :(得分:0)

最简单的形式如下:

$(':not(#friendRequestMenu, #friendRequestMenu *)').each(...);

$('*').not('#friendRequestMenu, #friendRequestMenu *');

第二版可能更有效率,因为我不相信浏览器的querySelectorAll原生实现支持:not(...)。除非您遇到查询需要多长时间的问题,否则不要打扰优化。

答案 2 :(得分:-1)

试试这个

$('*').not("#friendRequestMenu, #friendRequestMenu *").each(function(){
  //do something here
});