2011-01-31 107 views
0

我想樣式a不屬於某個ID的元素。例如,讓我們說這是我的HTML:如何選擇:不在某個選擇器中的懸停

<div id="boat"> 
    <a href="#">I'm in a boat! ☻</a> 
</div> 
<a href="#">☹</a> 

現在,讓我們說,我只想樣式的a元素,這不是一條船上。我預計類似a:hover:not(#boat a)的工作,但唉,事實並非如此。有什麼辦法可以做我想做的事嗎?

+0

不幸的是`:not()`只接受一個簡單的選擇器作爲參數。在這裏,`#boat a`表示兩個簡單的選擇器與後代選擇器相結合,`a`是鍵選擇器。你最好的選擇是使用jQuery - 我喜歡Marcus Whybrow的答案。 – BoltClock 2011-01-31 11:17:21

回答

3

當談到jQuery選擇器a:hover將選擇應用了CSS僞類:hover的所有a元素(即a當前正在用鼠標懸停的元素)。

這是選擇的過程,不是造型選擇,選擇你所談論的內容,試試這個來代替:

$('a:not(#boat a)') 

DEMO:http://jsfiddle.net/marcuswhybrow/AMWhU/

如果懸停jQuery的效果是,你是在你做了選擇後,像往常一樣綁定事件:

$('a:not(#boat a)').hover(function() {}); 
0

鏈接不是內div#id會有.closest('div#id').length === 0,由於0是假的,你可以按如下樣式的鏈接上那些相反的選擇:

$('a').hover(function(e){ 
    if (!$(this).closest('div#boat').length) { 
     // YOUR CODE HERE 
    } 
}); 

Here's an example.

+0

您應該在將處理程序綁定到每個`a`標記之前正確地進行選擇,從而減少設置。 – 2011-01-31 04:31:46

+0

好點,你的方式更好。 – mVChr 2011-01-31 08:16:47

0

它看起來像你可以使用否定屬性選擇器('!=')。鑑於(主要是)你原來的HTML:

<script src="/Users/kburton/Downloads/jquery-1.4.4.min.js"> 
    </script> 
<div id="boat"> 
    <a href="#">I'm in a boat!</a> 
</div> 
<div id='car'> 
    <a href="#">I'm in a car!</a> 
</div> 
<a href="#">I'm not in the boat!</a> 

在JavaScript控制檯,運行:

$('[id!="boat"] > a') 

尋找那些沒有身份證「舟」的所有節點,與錨的孩子。