Jquery hasClass 用于多个类

2024-02-03

我有,

<tr valign="top">
    <th class="chkCol fixed">..checkbox..</th>
    <th class="fixed">..head..</th>
</tr>

现在在 Jquery 中我调用一个类似的函数,

if($(this).hasClass("fixed")){
   ....
}

如果我打电话$(this).hasClass("fixed"),然后我只需要得到 head 而不是复选框,这在 Jquery 1.4.2 中工作得很好,但现在我更新到了 jquery 1.6.1。 现在我在 if 条件内得到了复选框。

请帮忙,

提前致谢


I'd be very surprised if jQuery 1.4.2 gets this wrong jQuery 1.4.2 does not get this wrong. hasClass("fixed") should be true in both cases, in all versions of jQuery. Here's an example http://jsbin.com/oleta5 using v1.6.1, and the same example http://jsbin.com/oleta5/2 using v1.4.2. Both work fine.

如果你想检查“已修复”,那就是only元素上的类,这在没有 jQuery 的情况下更容易完成,通过直接转到反射属性:

if (this.className === "fixed") {
    // ...
}

className是反映“class”属性的属性,与“class”属性一样,它是一个以空格分隔的字符串。

当然,如果元素上还有任何其他类,例如“fixed some-else”,上面的操作将会失败。

如果您特别想检查它是否具有“fixed”并且没有“chkCol”,那么您必须故意这样做:

var $this = $(this);
if ($this.hasClass("fixed") && !$this.hasClass("chkCol")) {
    // ...
}

如果您在选择器中执行此操作(而不是检查已有的元素),则可以使用选择器".fixed:not(.chkCol)"。但尽管你can使用您已经使用的元素执行此操作is http://api.jquery.com/is/,它不必要地昂贵(jQuery 必须解析选择器)。


Update: 你说你已经尝试过了&& !$this.hasClass("chkCol")事情并没有奏效。这意味着某事earlier in the if条件已经决定了整个表达式的结果,因此!$this.hasClass("chkCol")部分没有什么区别(并且根本不运行,因为 JavaScript 短路了表达式)。

Example:

var x = 1;

if (x == 1 || $this.hasClass("fixed") && !$this.hasClass("chkCol"))

在那种情况下,因为x is 1,右侧没有任何内容||甚至根本不被人看;表达式的值已经是true.


Update 2:

你说过你正在使用hasClass,但在对另一个答案的评论中你说:

如果我使用$(this).attr('class') == "fixed",则根本不进入 if 条件

我不认为你实际上在做的是这样的:

if ($(this).attr('className') == "fixed") {
    // ...
}

请注意,这是“className”,而不是“class”。如果这就是你正在做的事情,那么不管用在 1.6.1 上,但在 1.4.2 上会。没有属性称为“类名”;有一个名为“class”的属性和一个property称为“类名”。 jQuery 1.6.x 区分属性和属性。

我上面的代码,使用hasClass,适用于所有版本。或者更改您的代码以使用attr("class")而不是attr("className").

这是一个 v1.4.2 示例 http://jsbin.com/ugefu4/3显示attr("className")工作(它不应该)。这是一个 v1.6.1 示例 http://jsbin.com/ugefu4/2显示attr("className")不工作(这是正确的)。两个版本都显示了获取“class”属性的正确方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery hasClass 用于多个类 的相关文章

随机推荐