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]'標準の文字列であり、解析されないためです。

セレクターを に変更してみる'.mk[value=' + x + ']'と、x が変数の値に置き換えられます。

于 2012-04-09T16:00:45.750 に答える
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

Try that way:

$('.mk[value='+x+']').each(
于 2012-04-09T15:57:55.827 に答える
0

change this

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

to

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

You need to put your value into the selection string like this:

$('#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 に答える