一个简单的问题:为什么这不起作用?
if ($('a:contains("some text"):first').attr("class") == "someclass") {
this.css('background-color', 'red');
}
this
应该引用第一行中的<a>元素。
不幸的是,这不是this
关键字作用域的工作原理。在这种情况下,this
将引用此代码放置在任何地方的包含范围。要执行您需要的操作,您将需要a
直接引用该元素。试试这个:
var $a = $('a:contains("some text"):first');
if ($a.attr("class") == "someclass") {
$a.css('background-color', 'red');
}
另请注意,如果a
所选元素具有多个类,则以上操作将失败。要解决此问题,您可以使用jQuery的hasClass()
方法:
var $a = $('a:contains("some text"):first');
if ($a.hasClass("someclass")) {
$a.css('background-color', 'red');
}
或者,更好的是,您可以直接在要查找的类中选择元素,而无需使用该if
语句。
$('a.someclass:contains("some text"):first').css('background-color', 'red');
最后请注意,更好的做法是在单独的样式表中定义样式规则,然后使用addClass()
JS中所需的位置添加这些类,而不是使用临时添加它们.css()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句