我需要$('.mk[value=x]')
才能工作,但$('.mk[value=1]')
却没有。
请有人帮忙
<body>
<span class="mk" value="1">1</span>
<span class="mk" value="1">1</span>
<span class="mk" value="3">3</span>
<input id="update" type="button" value="1" />
</body>
<script type="text/javascript">
$('#update').click(function(){
var x = this.value //--> x =1
$('.mk[value=x]').each(function(key, value) { //--> NOT WORKING !
$('.mk[value=1]').each(function(key, value) { //--> WORKING !
$(this).replaceWith('<span class="mk" value="2">2</span>')
});
})
</script>
答案 0 :(得分:7)
您需要将x
变量附加到字符串:
$(".mk[value='" + x + "']").each(function(key, value)
另外,您应该注意value
不是span
的有效属性,因此此代码会导致验证问题。
答案 1 :(得分:1)
尝试这种方式:
$('.mk[value='+x+']').each(
答案 2 :(得分:1)
您需要将其连接到字符串
$('.mk[value='+ x +']').each(function(key, value)
或使用.filter()
$('.mk').filter(function(){return this.value === x;}).each(function(key, value)
或者因为你已经对它们使用each
,你可以在那里进行过滤
$('.mk').each(function(key, value) {
if (this.value === x) {
this.replaceWith('<span class="mk" value="2">2</span>');
}
});
})
答案 3 :(得分:1)
它不起作用的原因是'.mk[value=x]'
是一个标准字符串,它不会被解析。
尝试将选择器更改为'.mk[value=' + x + ']'
,x将替换为变量的值。
答案 4 :(得分:0)
更改此
$('.mk[value=x]')
到
$('.mk[value='+x+']')
答案 5 :(得分:0)
您需要将值放入选择字符串中,如下所示:
$('#update').click(function(){
var x = this.value
$(".mk[value='" + x + "']").each(function(key, value) {
this.replaceWith('<span class="mk" value="2">2</span>')
});
})