2012-04-09 83 views
3

我需要$('.mk[value=x]')才能工作,但它不會,而$('.mk[value=1]')會。 請別人幫選擇器內的jQuery變量

<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> 

回答

7

您需要的x變量追加到字符串:

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

而且,你要注意,value不是span一個有效的屬性,所以這個代碼將導致驗證的問題。

+0

+1(除了_right_)引用選擇器中的屬性值。 – 2012-04-09 15:58:40

+0

@MДΓΓБДLL:不需要使用簡單屬性值的引號。 – 2012-04-09 16:02:59

+1

@amnotiam他們可能不需要,但他們是良好的做法海事組織。 – 2012-04-09 16:03:24

1

試試這樣:

$('.mk[value='+x+']').each(
0

改變這種

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

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

你需要把你的價值到選擇字符串是這樣的:

$('#update').click(function(){ 
var x = this.value 
$(".mk[value='" + x + "']").each(function(key, value) { 
    this.replaceWith('<span class="mk" value="2">2</span>') 
}); 
}) 
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>'); 
     } 
    }); 
}) 
1

它的原因不工作的是'.mk[value=x]'是一個標準字符串,它不會被解析。

嘗試將選擇器更改爲'.mk[value=' + x + ']',並將x替換爲變量的值。