2017-07-28 15 views
1

属性data-socketidの値がabcのすべての要素を検索し、その値をxyzに置き換えます。これを行う方法。特定の値を持つカスタム属性を持つ要素を見つけて置き換えます

そのABCに注意し、ページ は、これは私がこれまでに行ったことある

をリフレッシュすると、両方が動的に作成されているXYZください。しかし、それは動作しません。

HTML

<div id="chat-win" data-socketid="abc"> 
    <div class="close-conversation-box">     
     <div class="text-right">      
     <a id="end-chat" data-socketid="abc" >End Chat</a> 
     <a id="stop_bot" data-socketid="abc" >Stop Bot</a> 
     </div> 
    </div> 
</div> 

スクリプト

var matchDataSocketId = $("[data-socketid$=abc]"); 
var len = Object.keys(matchDataSocketId).length; 

for(var i = 0; i < len; i++) { 
    $(matchDataSocketId[i]).attr('data-socketid', $(matchDataSocketId[i]).attr('data-socketid').replace(abc, xyz)); 
} 

すべてのヘルプ、提案が高く評価されます。前もって感謝します。一致する要素を

$("[data-socketid=abc]").attr("data-socketid", "xyz"); 

それだけで繰り返し処理をし、xyzからdata-socketid属性の値を変更します。

+3

属性値を更新するために.attr(fn)を使用することができますあなたのHTMLの例では、 'abc'と' xyz'が全体の値であることを意味しますあなたのJSはそれがあなたがやろうとしている部分一致/置き換えであることを意味します。いずれかの状況のロジックが*非常に*異なるので、あなたの状況の具体的な例を教えてください。 –

+0

実際には、私は全体の値を変更したい時がありますが、値の一部を置き換える必要がある時があります。 @RoryMcCrossan –

+0

この場合、@ Satpalでカバーしました –

答えて

2

、あなたが

$("[data-socketid=$abc]").attr(function(_, value) { 
    return value.replace('abc', 'xyz'); 
}); 
1

これを試してみてください。

を使用すると、整合素子がその data-socketid属性の値として abcを持つべきであると述べてきたので、私はあなたのセレクタに =$を削除したことに注意してください。それは部分一致/交換だとコードsampleimplies 1として

+2

ちょうど、それぞれ$( "[data-socketid = abc]")。attr( "data-socketid"、 "xyz"); 'は必要ありません。 *しかし、*私はOPが部分一致/置換を行う必要があると思います。 –

+0

@ RoryMcCrossan - ありがとう。コードを更新しました。 – 31piy

関連する問題