2014-02-13 23 views
73

我有一個像下面幾個要素:jQuery的發現元素的數據屬性值

<a class="slide-link" href="#" data-slide="0">1</a> 
<a class="slide-link" href="#" data-slide="1">2</a> 
<a class="slide-link" href="#" data-slide="2">3</a> 

我如何添加一個類具有的0(零)data-slide屬性值的元素?

我已經嘗試了許多不同的解決方案,但沒有任何工作。舉例:

$('.slide-link').find('[data-slide="0"]').addClass('active'); 

任何想法?

+2

爲了在這裏解釋一些事情,爲什麼這不起作用是因爲你試圖找到'.slide-link'的後代,其屬性爲[data-slide =「0」]'。由於某些東西不可能是它自己的後代,因此它沒有任何東西可以返回。但是,如果你有一個包裝這些鏈接,那麼這將工作︰'$('。slide-link-wrapper')。find('[data-slide =「0」]')。addClass('active' );' – DondeEstaMiCulo

+0

請參閱http://stackoverflow.com/q/4191386/292060 – goodeye

回答

160

使用Attribute Equals Selector

$('.slide-link[data-slide="0"]').addClass('active'); 

Fiddle Demo

.find()

它工作在樹中

獲取每個元素的後代在匹配元素的當前集合中,由選擇器,jQuery對象或元素過濾。

+2

我的不好。我嘗試過,但在錯誤的地方(動態添加我的元素之前...)。無論如何感謝您的努力!工作正常。 – MrUpsidown

+0

@MrUpsidown歡迎快樂幫忙:) –

+1

哇!這個解決方案非常棒!有幾個小時的問題,但這固定了! – Swolschblauw

47

您還可以使用.filter()

$('.slide-link').filter('[data-slide="0"]').addClass('active'); 
1

你也可以使用andSelf()方法得到的包裝DOM包含然後find()可以變通爲你的想法

$(function() { 
 
    $('.slide-link').andSelf().find('[data-slide="0"]').addClass('active'); 
 
})
.active { 
 
    background: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a class="slide-link" href="#" data-slide="0">1</a> 
 
<a class="slide-link" href="#" data-slide="1">2</a> 
 
<a class="slide-link" href="#" data-slide="2">3</a>

相關問題