2010-12-03 70 views
0

Greetings,jquery - 關於選擇器的困惑

這個新手需要澄清。考慮腳本此位...

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

如果這是更多的在我的網頁一個H3 DOM元素,上面的腳本將適用於所有的元素,是否正確?

如果是這樣,是否有一種方法可以「排除」其他特定DOM元素(按我的示例)?我想知道鏈接選擇器是否適用於這種情況,例如

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

這是正確的做法嗎?

感謝您的輸入。

+0

你能發佈你的標記嗎? – 2010-12-03 19:13:48

回答

1

這正是你將如何去做。

試着用你在css中選擇一個對象的方式來思考你的選擇器。

在應用選擇器來保持jQuery zippy時,儘可能具體說明這是個好主意。

基本規則是這樣

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

將一個H3標籤內的一個字段中選擇超鏈接...(不知道這是有效的,雖然HTML)

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

將廣告類銀於H3字段集和超鏈接。

簡單!

+0

感謝您的示例。感謝您抽出寶貴的時間。投了票。 – Chris 2010-12-03 19:27:04

+0

@Chris無後顧之憂,樂於幫忙。一旦你掌握了jQuery,你會驚訝於它使得事物變得簡單。 – 2010-12-03 19:58:26

1

如果這在我的頁面中多了一個h3 DOM元素,上面的腳本將適用於所有元素,是否正確?

如果是這樣,是有辦法的「目標」特定的DOM元素(按我的例子),而排除其他?

是的。有很多方法。查看jQuery selectors documentation瞭解如何限制所選元素。

0

好吧,你可以添加一個類到你想要的目標H3。或者你可以選擇包含您要定位的H3的元素,然後使用.find()來獲取H3

示例代碼:

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

OR

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

哪個更快?使用find()方法或簡單地爲我的h3標籤指定一個id我的目標和調用它? – Chris 2010-12-03 19:31:47

+0

添加,並通過ID引用DOM元素是最快的方式 – user406905 2010-12-11 07:54:58

1

要回答你的第一個問題,是的,$(「h3」)將適用於所有H3元素。

要縮小選擇範圍,您有一系列選項。在這裏查看全部:jQuery Selectors。最好的選擇是分配您感興趣定位ID的元素。

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

然後你就可以訪問它像這樣:

$("#firstSection") 

或者,如果你知道你只想要第一個H3元素,你可以做更多的東西快速和骯髒這樣

$("h3:first") 
0

你可以給一個類的h3:

所以你會選擇這樣的項目:$(「.reto」)。

1

在元素上放置一個id以選擇單個元素。

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

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

是的,使用「h3」選擇器將添加一個單擊事件到頁面上的所有h3標籤。

你可以像你在第二個例子中那樣鏈式選擇器,但是你會在jQuery中產生一些額外的開銷,因爲它試圖解析和搜索DOM中的匹配元素。最好的選擇是爲您的目標h3標籤添加一個id,並使用類似於以下的內容:

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