2016-10-18 22 views
2

を働いていない私は、この要素jQueryのデータ属性セレクタ

<div class="messages selected" data-conversationId=""></div> 

data-attributeconversationIdがそうのように動的に設定されているがあります。

$(".messages").data("conversationId", conversationId); 

に私はデータによって、この要素を選択するセレクタを使用して問題が生じています属性。

$(".messages[data-conversationId=4]") 

空の配列を返します。興味深いことに:私のセレクタと間違っている何

$(".messages").data("conversationId") 

戻り4

+0

最後のものを取得します...最後の値は、値が4である可能性がありますか? –

+1

属性値は引用符で囲む必要があります。 '$( '。messages [data-conversationId =" 4 "]')'。 –

+1

引用符がありません: '' '$( '。messages [data-conversationId =" 4 "]')' ''は動作しますか? – Dario

答えて

5

jqueryの.data()で動的属性を設定すると、上記の問題が発生します。 https://jsfiddle.net/6dn5wjL8/8/

HTML

<div id="test1" class="messages selected" data-conversationId="">testContent1</div> 
<div id="test2" class="messages selected" data-conversationId="">testContent2</div> 

JS:あなたはjQueryの.ATTRを経由して()メソッドを動的な属性を設定した場合

しかし、あなたはここで

例、この問題は発生しません

// Will work 
$("#test1").attr("data-conversationId", 4) 
// Will not work 
$("#test2").data("conversationId", 3) 


alert("With selector .messages[data-conversationId=4] I found a div with this content: "+$(".messages[data-conversationId=4]").html()) 

alert("With selector .messages[data-conversationId=3] I found a div with this content: "+$(".messages[data-conversationId=3]").html()) 
0

が、私はこの文 $で考える(「メッセージ[データ-はconversationId = 4]」)、あなたはクラスのメッセージを持っており、誰が4

として、データはconversationIdを持っている要素を選択しようとしているとマークアップであなたがマークアップがDATA-するデータはconversationId =「『

の変化としてそれを言及しているので、この文の$(』。メッセージは」)。あなたのこの例のデータ( 『はconversationId』)は、未定義返しますconversationid = "5"、文 $( "。message")data( 'conversationId')で確認すると、5を返します。

欲しいのは、

+0

再度動的に設定するので、マークアップでこれを行うことはできません –

+0

動的に設定するコードを含めてください。 – Geeky

+0

これは何が起きているのか理解するのに役立ちます – Geeky

関連する問題