如何在jQuery中选择除div之外的所有内容?

时间:2015-05-12 19:48:14

标签: jquery html

我有一个我要淡入/淡出的页面。但是,我不希望菜单(或div类menu-outer中的任何内容)随之消失。我几乎不知道任何jQuery,所以想知道你们中是否有人知道为什么这不起作用。

jQuery:

$(document).ready(function() {
    $('body:not(div.menu-outer)').css('display', 'none');
    $('body:not(div.menu-outer)').fadeIn(1000);

    $('a').click(function(event) {
        event.preventDefault();
        newLocation = this.href;
        $('body:not(div.menu-outer)').fadeOut(1000, newpage);
    });

    function newpage() {
        window.location = newLocation;
    }
});

html很大,所以我不会发布它,但我要排除的div有一类菜单外。

3 个答案:

答案 0 :(得分:0)

您可以这样做:

$('*').not("div.menu-outer").fadeOut();

这说明:选择所有内容:$(*)div.menu-outer除外:.not("div.menu-outer")

答案 1 :(得分:0)

已更新,注意$('body:not(div.menu-outer)').fadeOut(1000, newpage);将回调newpage附加到body的每个子元素,但div.menu-outer除外;对于具有该集合的每个元素将被调用一次;可以利用.promise().done(fn)作为替代;只调用一次回调

$(document).ready(function () {

    function newpage(newLocation) {
      window.location = newLocation;
    }

    $('body *:not(div.menu-outer)').fadeOut(-3000);
    $('body *').fadeIn(1000);

    $('a').on("click", function (event) {
        var el = $(this);
        event.preventDefault();
        // newLocation = this.href;
        $('body *:not(div.menu-outer)').fadeOut(1000)
         .promise().done(function() {
            // do other stuff
            newpage(el.attr("href"))
          });

    });
});

jsfiddle http://jsfiddle.net/g8sdc5q6/2/

答案 2 :(得分:0)

您正在隐藏菜单的祖先元素,而这些元素又会隐藏菜单。你可以尝试这样的事情:

var menuParents = $('div.menu-outer').parents();
$('*').not('div.menu-outer').not(parents).css('display', 'none');
$('*').not('div.menu-outer').not(parents).fadeIn(1000);