简单的问题:为什么这不起作用?
if ($('a:contains("some text"):first').attr("class") == "someclass") {
this.css('background-color', 'red');
}
答案 0 :(得分:2)
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()
临时添加它们。< / p>