我需要找到类MyClass1的元素,它具有属性编号。我的尝试是:
$(".MyClass1[number=" + userId + "]")
但它没有用。我的错误在哪里?
<tr class = "Myclass2">
<td>
<a href="#" number="5" title="checkselector" class="MyClass1">blablabla=)</a>
</td>
</tr>
答案 0 :(得分:2)
这方面有两个方面:
你匹配的
如果您只是想知道它有一个属性,而不是设置为特定值,请不要使用=
和值:
$(".MyClass1[number]")
这将匹配具有number
属性的任何元素以及该代码行运行时存在的类MyClass1
。
根据您的修改,听起来您正在尝试匹配特定的数字。假设userId
包含12
:
var userId = 12;
...那么你的代码很好:
$(".MyClass1[number=" + userId + "]")
...因为评估结果为:
$(".MyClass1[number=12]")
你可以在值周围加上引号,但如果值包含空格或其他几个非字母数字字符,则需要。如果您知道它是一个数字(因此只包含数字),则不需要它们。
时与您匹配
之前我曾说过&#34;这将匹配任何元素与......在该行代码运行时存在。&#34; 这很重要。如果代码在上面的元素中,则它不会找到它,因为该元素尚不存在:
<!-- Doesn't work -->
<script>
$(".MyClass1[number=12]").css("color", "green");
</script>
<!-- ... -->
<a href="#" number="12" title="@Resources.Appoint" class="MyClass1">Joe BLoggs</a>
但是如果脚本是之后的,那么元素就存在并且可以找到:
<a href="#" number="12" title="@Resources.Appoint" class="MyClass1">Joe BLoggs</a>
<!-- Works -->
<script>
$(".MyClass1[number=12]").css("color", "green");
</script>
<!-- ... -->
通常的建议是将您的脚本放在页面末尾,就在结束</body>
标记之前。但是,如果你不控制他们去哪里,你可以使用jQuery的ready
函数:
$(document).ready(function() {
// ...your code here...
});
......也可以缩短为:
$(function() {
// ...your code here...
});
答案 1 :(得分:2)
您错过了引号:
$(".MyClass1[number='" + userId + "']")