2016-10-08 1 views
1

次のマークアップがあります。2つのクラス間の配列またはオブジェクトに属性を格納するjQuery

<div class="block" my_id="1">1</div> 
<div class="block first" my_id="2">2</div> 
<div class="block" my_id="3">3</div> 
<div class="block" my_id="4">4</div> 
<div class="block last" my_id="5">5</div> 
<div class="block" my_id="6">6</div> 

私はfirstlastクラス間でmy_idの値を選択して、オブジェクトに保存します。この場合2,3,4,5になります。

var number_store = []; 
$('.first').nextUntil('last').attr('my_id')//?? 

これはどのように達成できますか?

ありがとうございます!

答えて

1

my_idis not a valid HTML attribute。カスタム値を格納するには、data-*属性を使用する必要があります。

jQueryの.andSelf()メソッドを使用すると、.first.lastの両方の要素が含まれます。


EDIT(コメント用感謝)

.andSelf()
は、この関数は非推奨とjQuery 1.8以降で使用されるべき、今.addBack()の別名ですされています。

var number_store = $('.first').nextUntil('.last').addBack().next().addBack().map(function(){ 
 
    return $(this).attr('data-id'); 
 
}).get(); 
 

 
console.log(number_store);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="block" data-id="1">1</div> 
 
<div class="block first" data-id="2">2</div> 
 
<div class="block" data-id="3">3</div> 
 
<div class="block" data-id="4">4</div> 
 
<div class="block last" data-id="5">5</div> 
 
<div class="block" data-id="6">6</div>

number_storeアレイを保持します。


その他の参考文献:

+0

完全な説明をありがとうございました。 'data-id' 2と5を保持したいのですが? ( "。first"と "。last"のデータID) –

+1

ありがとうございます。 '.andSelf()'は廃止され、 ".addBack()"のエイリアスになりました。これはjQuery 1.8以降で使用する必要があります。ありがとうございました。それは働いた。 –

+1

@steveKimコメントありがとうございました。私はそれが非難されていることを見落とした。更新された答え –

1

.each()を使用して、exの配列に属性値を追加できます。

var number_store = []; 
$('.first').nextUntil('last').each(function(){ 
    number_store.push($(this).attr('my_id')); 
}); 
関連する問題