2017-04-19 74 views
1
$(".focus-button").addClass('active'); 
$(".focus-button[data-expand='true']").addClass('active'); 

使用可變控股選擇。如果我存儲在像變量的類選擇:在Javascript

var btn = $(".focus-button"); 

變量可以在代碼中使用

btn.addClass('active'); // This is correct 
btn[data-expand='true'].addClass('active'); // This is wrong 

我可以知道是使用變量和屬性的正確方法。

+6

'filter' http://api.jquery.com/filter/'btn.filter( 「[數據展開= '真']」)' –

回答

3

您可以使用filter以您想要的方式添加其他選擇器。

將匹配元素的集合減少爲匹配選擇器或通過函數測試的元素。

實施例:

var btn = $(".focus-button"); 
btn.addClass("active"); 
btn.filter("[data-expand='true']").removeClass("active") 

var btn = $(".focus-button"); 
btn.filter("[data-expand='true']") 

相同

$(".focus-button[data-expand='true']") 
+0

感謝您的信息。祝你有美好的一天。 –

2

情況:

在您的實際代碼,如果你寫:

var btn = $(".focus-button"); 

你將會得到一個focus-button類的所有元素的集合,所以當你寫,btn.addClass('active');它是正確的,它會在類active添加到所有元素這個集合。

問題:

而當你寫:

btn[data-expand='true'].addClass('active'); 

這是錯誤的,因爲JavaScript將其理解爲你在你的btn對象訪問屬性,因爲[]僅用於訪問特定propertyobject中或特定元素由indexarray中。

btn[data-expand='true']只是一個CSS選擇器。

解決方案:

您可以使用jQuery .filter()作爲意見提出,像這樣:

btn.filter("[data-expand='true']").addClass('active'); 
+0

感謝您的回答。祝你有個美好的一天 –

1

試試這個片斷:

//$(".focus-button").addClass('active'); 
 
//$(".focus-button[data-expand='true']").addClass('active'); 
 

 

 
var btn = $(".focus-button"); 
 
//btn.addClass('active'); 
 

 
btn.filter("[data-expand='true']").addClass('active');
.active{ 
 
background: #000; 
 
color: #fff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="focus-button">F</div> 
 
<div class="focus-button" data-expand="true">E</div>

+0

感謝您的回答。有一個美好的一天 –

1

嘗試此代碼

btn.filter("data-expand='true'").addClass('active'); 
+1

感謝您的答案。祝你有美好的一天 –