按属性比较元素

Comparing elements by attribute

本文关键字:元素 比较 属性      更新时间:2023-09-26

好的,我正在尝试检查属性value的值是否等于某个字符串。如果我调用alert来告诉我这是否为真,它将为真,但如果该语句为真,我就不能添加类。我做错了什么?

<div class="firstch" value="20:30">TEST</div>
div {
    display:block;
    border:1px solid black;
}
.disable {
    background-color: red;
}
var attr = $('.firstch').attr('value');
if ( attr === '20:30') {
    $(this).addClass('disable');
} else {
    alert('YEah right -_-');
}

JsFiddle 上的代码

您正在向div添加value属性。仅根据本文档<button>, <option>, <input>, <li>, <meter>, <progress>, <param>具有属性。因此,您可以向这个div 添加自定义的数据属性

其次,您试图在if循环中使用this进行引用。但这里$(this)将失败,因为您没有在任何jquery对象上循环。相反,它只是比较和相等性检查。因此,您需要使用适当的选择器来引用元素。

希望这个片段对有用

HTML

<div class="firstch" data-value="20:30">TEST</div> // Note use of data attribute

JS

 var attr = $('.firstch').attr('data-value');
 // For some browsers, `attr` is undefined; for others, `attr` is false. Check for both.
 if (attr === '20:30') {
   $('.firstch').addClass('disable');
 } else {
   alert('YEah right -_-');
 }

JSFIDDLE

它正在按预期工作。问题是this引用了代码中的document对象。更改为:

$('.firstch').addClass('disable');

您的选择器添加类错误

$(this).addClass('disable');

这里$(this)是窗口对象,您应该为要添加类的元素使用正确的选择器。