2017-07-28 61 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"); 

它簡單地進行迭代,並且改變data-socketid屬性來xyz值:

+3

你的HTML例子意味着'abc'和'xyz'是整個價值,但是你的JS暗示這是你試圖做的部分匹配/替換。因爲任何一種情況的邏輯都是非常不同的,所以你可以舉一個具體的例子來說明你的情況 –

+0

實際上,當時我想改變整個值,但有時候我需要替換一部分值。 @RoryMcCrossan –

+0

在這種情況下@Satpal已經涵蓋了 –

回答

2

按代碼sampleimplies,這是一個部分匹配/替換,您可以使用.attr(fn)更新屬性值

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

嘗試此。

請注意,我在你的選擇=之前刪除$因爲你已經提到匹配的元素應該有abc作爲其data-socketid屬性的值。

+2

只是FYI你不需要每個:'$(「[data-socketid = abc]」)。attr(「data-socketid」,「xyz」);'。 *但是*我認爲OP需要做部分匹配/替換。 –

+0

@RoryMcCrossan - 謝謝。我更新了代碼。 – 31piy

相關問題