目前,我需要检查特定的锚标记,看它是否包含某些文本。如果确实如此,我需要它来改变另一个元素的文本。举个例子,我有以下代码。但是,无论我把它放在一个锚标签中,它总是警告“是的!”。
if ($("a:contains('Level 2 (Admin Only)')")) {
alert("yup!");
}
else {
alert("nope!");
}
我做错了什么?我应该使用不同的选择器方法吗?
答案 0 :(得分:5)
您必须检查jQuery对象的大小。 jQuery返回一个对象,由所有匹配的元素组成。
// If .length == zero, it evaluates to false in an if condition
if ($("a:contains('Level 2 (Admin Only)')").length) {
答案 1 :(得分:4)
这是因为$("a:contains('Level 2 (Admin Only)')")
总是为真。
试试这个:
if($("a:contains('Level 2 (Admin Only)')").length) {
alert("yup!");
}else{
alert("nope!");
}
答案 2 :(得分:2)
jQuery方法总是返回一个对象,无论选择器是否匹配任何元素;和对象总是真实。
您应该使用.length
属性,如果元素匹配则为 truthy ,如果不匹配则为 falsy 。
if ($("a:contains('Level 2 (Admin Only)')").length) {
alert("yup!");
}else{
alert("nope!");
}