如何选择:悬停不在某个选择器中

时间:2011-01-31 03:19:15

标签: jquery css css3 jquery-selectors css-selectors

我想设置不在某个ID中的a个元素。例如,假设这是我的HTML:

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

现在,假设我只想设置不在船上的a元素。我期望类似于a:hover:not(#boat a)的东西可以工作,但唉,事实并非如此。我有办法做我想做的事吗?

3 个答案:

答案 0 :(得分:3)

当涉及到jQuery选择器时,a:hover将选择所有应用了CSS伪类a的{​​{1}}元素(即当前正在使用的:hover元素用鼠标盘旋。

这是选择过程,不是样式选择,要选择您正在谈论的元素,请尝试以下方法:

a

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

如果一个悬停的jQuery效果是你所做的选择,那么你就像往常一样绑定事件:

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

答案 1 :(得分:0)

div#id以内的链接将包含.closest('div#id').length === 0,并且由于0为false,您可以选择与以下相反的方式来设置这些链接的样式:

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

Here's an example.

答案 2 :(得分: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')

查找没有id“boat”的所有节点,以及一个锚子节点。