2017-07-29 124 views
0

使用(自定義)的JQuery data-attributes檢索,其中顯示這些圖標的元素,我成功地改變圖標,這方面的工作代碼中查找元素(S):JQuery的 - 通過數據屬性=變量

<i class="glyphicon glyphicon-check" data-year="2014" data-flag_check="1"></i> 
... 
<script> 
    ... 
    $('i[data-year="2014"]').removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 

但是,如果我嘗試用變量替換常量2014,我的代碼停止工作。

var yearIn = "2014"; 
$('i[data-year=yearIn]').removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 

問: 是否有可能用一個變量執行此操作?

可能後續問題: 如果是這樣,任何人都可以檢測到我的語法有什麼問題嗎?

回答

2

你只是缺少字符串連接:

var yearIn = "2014"; 
$('i[data-year=' + yearIn + ']').removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 
// ------------^^^^^^^^^^^^^^ 

或者在ES2015 +,你可以使用文字用替代令牌的模板:

var yearIn = "2014"; 
    $(`i[data-year=${yearIn}]`).removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 
// ^------------^^^^^^^^^-^ 

FWIW,我總是圍繞使用引號當它來自一個變量時,選擇器中的值,以防變量以空格結束,例如:

var yearIn = "2014"; 
$('i[data-year="' + yearIn + '"]').removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 
// ------------^--------------^ 

var yearIn = "2014"; 
$(`i[data-year="${yearIn}"]`).removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 
// ------------^---------^ 
+0

或者使用模板文字:) – Vucko

+1

@Vucko:相當。我真的應該開始混合那些,在兩年後... –

+0

這樣一個noobie slipup,我無話可說,在我自己的青睞。 UPVOTED和CHOSEN! :) –

1

您使用字符串字面'yearIn'而不是變量yearIn,做這樣的事情來連接字符串:

$('i[data-year=' + yearIn + ']').removeClass('glyphicon-check').addClass('glyphicon-unchecked'); 
+0

我對這樣一個noobie錯誤感到愧疚和尷尬。 UPVOTED –