3

我需要$('.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>
4

6 回答 6

7

您需要将x变量附加到字符串:

$(".mk[value='" + x + "']").each(function(key, value)

另外,您应该注意这value不是 的有效属性span,因此此代码将导致验证问题。

于 2012-04-09T15:57:20.557 回答
1

试试这样:

$('.mk[value='+x+']').each(
于 2012-04-09T15:57:55.827 回答
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>');
      }
   });
})
于 2012-04-09T15:59:19.943 回答
1

它不起作用的原因是它'.mk[value=x]'是一个标准字符串并且它没有被解析。

尝试将选择器更改为'.mk[value=' + x + ']',x 将替换为变量的值。

于 2012-04-09T16:00:45.750 回答
0

改变这个

$('.mk[value=x]')

$('.mk[value='+x+']')
于 2012-04-09T15:57:59.280 回答
0

您需要将值放入选择字符串中,如下所示:

$('#update').click(function(){
var x = this.value 
 $(".mk[value='" + x + "']").each(function(key, value) {
  this.replaceWith('<span class="mk" value="2">2</span>')
 });
})
于 2012-04-09T15:58:05.913 回答