【问题标题】:How to write "if not class" jQuery selector?如何编写“如果不是类”jQuery 选择器?
【发布时间】:2012-04-30 07:03:40
【问题描述】:

我想用 var p 做点什么:

var p = $("li:last");

但是如果附加了某个类,我不想做任何事情。我试过了:不是这样的:

var p = $("li:last:not(.Class)");

这不起作用。如何在我的 var 中排除 .Class?

【问题讨论】:

  • 只是为了澄清:not 选择器和.not 应该表现相同。意思是,var p = $("li:last").not(".Class");var p = $('li:last:not(.Class)') 应该以相同的方式工作。 >> 查看你的代码工作 jsfiddle.net/skram/76NNp

标签: jquery jquery-selectors


【解决方案1】:
var p = $("li:last").not(".Class");

http://api.jquery.com/not/

【讨论】:

  • :not(.Class) 应该做同样的事情,不是吗?
  • @Vega 因为 OP 也在使用 :last,所以引擎中可能会混淆先应用哪个。
  • @Vega,你是对的,实际上当我在 jsfiddle 中尝试它时它似乎对我工作正常:jsfiddle.net/5rhta/2(更改类名并且它工作,将其保留为 Class它什么也没做)。
  • @mblase75 正确使用时不应该有任何混淆。见演示jsfiddle.net/skram/76NNp
【解决方案2】:

实际上:not 确实可以用作选择器。

如果你想选择最后一个没有类的元素,使用这个

var p = $("li:not(.Class):last");

这将首先选择没有该类的lis,然后然后选择最后一个。 See it working here.

为了清楚起见,这些是等价的:

var p = $("li:not(.Class):last");
var p = $("li").not(".Class").last();

而且,这些也是等价的:

var p = $("li:last:not(.Class)");
var p = $("li").last().not(".Class");

【讨论】:

  • OP 似乎只想选择最后一个元素,前提是它不是.Class,如果是,则不选择任何内容。至少我是这么读的。
  • 我添加了一些进一步的解释,以使代码中发生的事情更加清晰。
  • 感谢您的回答和详细说明 (+1) 但我同意 bhamlin 提供的答案,他是第一个,它很简单,而且效果很好
  • @Youss 只是为了澄清:not 选择器和.not 应该表现相同。意思是,var p = $("li:last").not(".Class");var p = $('li:last:not(.Class)') 应该以相同的方式工作。 >> 查看您的代码是否正常工作 jsfiddle.net/skram/76NNp
【解决方案3】:
var p = $("li:last");
if (!p.hasClass('Class')){
//some stuff
}

http://api.jquery.com/hasClass/

【讨论】:

  • 这对我有用。特别有用,因为该元素有多个类。
猜你喜欢
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多