jquery - 对选择器感到困惑

时间:2010-12-03 19:11:49

标签: jquery css-selectors

问候,

这个新手需要澄清。考虑一下这个脚本......

   $("h3").click(function(){
        $(this).addClass("silver");
    });

如果这是我页面中的一个h3 DOM元素,上面的脚本将适用于所有元素,对吗?

如果是这样,有没有办法“瞄准”特定的DOM元素(根据我的例子),而排除其他元素?我想知道链接选择器是否适用于这种情况,例如

   $("h3 fieldset a").click(function(){
        $(this).addClass("silver");
    });

这是正确的方法吗?

感谢您的意见。

8 个答案:

答案 0 :(得分:1)

  

如果这是我页面中的一个h3 DOM元素,上面的脚本将适用于所有元素,对吗?

  

如果是这样,有没有办法“瞄准”特定的DOM元素(根据我的例子),而排除其他元素?

是。有很多方法。查看jQuery selectors documentation,了解如何限制所选元素。

答案 1 :(得分:1)

这就是你如何去做的。

尝试以与在css中选择对象相同的方式来考虑选择器。

在应用选择器以保持jQuery zippy时,尽可能具体地说这是一个好主意。

基本规则是这个

$("h3 fieldset a").click(function(){
        $(this).addClass("silver");
    });

会在h3标签内的字段集中选择一个超链接...(不确定这是否是有效的html)

,而

$("h3, fieldset, a").click(function(){
        $(this).addClass("silver");
    });

将类银添加到h3的fieldset和超链接。

simples!

答案 2 :(得分:1)

要回答您的第一个问题,是的,$(“h3”)将适用于所有H3元素。

要缩小选择范围,您可以选择各种选项。在这里查看所有这些:jQuery Selectors。最好的选择是分配您感兴趣的元素作为ID。

 <h3 id="firstSection">Headline!</h3>

然后您可以像这样访问它:

 $("#firstSection")

如果您知道自己只想要第一个H3元素

,那么你可以做更快更脏的事情
 $("h3:first")

答案 3 :(得分:1)

在元素上放置id以选择单个元素。

<h3 id="make-silver">text</h3>

$("h3#make-silver").click(function(){
    $(this).addClass("silver");
});

答案 4 :(得分:1)

是的,使用“h3”选择器会向页面上的所有h3标签添加点击事件。

你可以像你在第二个例子中那样链式选择器,但是你会在jQuery中产生一些额外的开销,因为它试图解析并搜索DOM以寻找匹配的元素。最好的选择是为您要定位的h3标记添加ID,并使用类似于以下内容的内容:

$("#h3Id").click(function(){
    $(this).addClass("silver");
});

答案 5 :(得分:0)

你的问题不清楚。

您可能正在寻找:not()选择器,或者您可能正在尝试按ID或类名过滤元素。

The documentation contains a complete list of selectors,附带示例。

答案 6 :(得分:0)

你可以为你想要定位的H3添加一个类。或者你可以选择一个包含你想要定位的H3的元素,然后使用.find()来获取H3

示例代码:

$('.classOnTargetH3').click(....);

OR

$('elementImediatlySouroundingH3').find('h3').click(....);

答案 7 :(得分:0)

你应该给h3上课:

所以你会选择这样的项目:$(“。reto”)。