jQuery select元素但只有一个子元素

时间:2013-12-04 12:11:58

标签: javascript jquery html css

我正在尝试在元素和所有孩子上应用一些CSS而不是一个。这也包括元素之外的字符串。这是我需要遗漏的标签,因为我需要将标签上的CSS更改为其他内容。我不能这样做:

$("div *").not("h1")[...]

因为它不适用于字符串。

http://jsfiddle.net/P5EAs/2/http://jsfiddle.net/P5EAs/1/了解我的意思。

这是jQuery,所以用CSS做这件事不行。我需要使用 .css()

5 个答案:

答案 0 :(得分:1)

由于h1div的孩子,你需要找到孩子并且不要使用.. 试试这个

$("div").children().not('h1').css("color","red");

,或者

简单的CSS

div{color:red;}
h1{color:black;} //after div..

这应该有效

答案 1 :(得分:1)

尝试:

只有CSS:

div{color:red;}
div h1{color:black;}

Fiddle here.

只有JS:

$("div").css("color", "red");
$("div h1").css("color", "black");

Fiddle here.

答案 2 :(得分:1)

$("div").css("color","red").find("h1").css("color", "black");

答案 3 :(得分:0)

你能得到的最接近的是:

$("div > *:not(h1)").css("color", "red");

但是,这将忽略未包含在元素中的文本

答案 4 :(得分:0)

您无法直接将颜色设置为文本节点,因此您必须在父级上设置红色,并将H1专门设置为黑色,或者您必须将textnode包装在一个范围内,并设置H1上的所有孩子都是红色。

$('div').children(':not(h1)').css('color', 'red').end()
        .contents().filter(function() {
            return this.nodeType === 3;
        }).wrap('<span style="color: red" />')

FIDDLE