2011-12-03 30 views
0

這不是爲我工作:jQuery.replaceAll多個元素?

$('<span>Something</span><span>Something else</span>').replaceAll('<span>Something New</span><span>Something New Too</span>'); 

如何更換超過1元?請幫助。

元素在DOM上,所以我不能附加它們。

+1

你是否試圖從DOM中選擇這些元素?或者你是否真的想要創造它們? jQuery的'$'過載了許多不同的行爲(可能太多)。 – RightSaidFred

+0

我從DOM中選擇它們。 –

+0

然後你可能不想做'replaceAll'。您最好從DOM中選擇這些元素,並更新其文本內容。 – RightSaidFred

回答

0
$('<span>Something</span><span>Something else</span>') 
    .appendTo("body") 
    .each(function(){ 
     $(this).replaceWith("<span>Something New</span>"); 
    }); 

Example

我們只是將span s附加到身體上,並用「新東西」span替換每個人。

+0

好主意,但元素已經在頁面上,我不能追加它們。 –

+0

然後只需做'$(「span」)。each(function(){...});' – Purag

0

你正在倒退。它去

$(/*New stuff*/).replaceAll(/*The items you're matching against*/); 
0

由於您的元素在DOM中,您需要選擇它們並更新它們的內容。

您可以完全替換它們,但它確實沒有必要,因爲您將它們替換爲相同的元素類型。

HTML

<span>Something</span> 
<span>Something else</span> 

JS

$('span').text(function(i,txt) { 
    if(i === 0) { 
     return "Something new"; 
    } else if(i === 1) { 
     return "Something new too"; 
    } else { 
     return txt; 
    } 
}); 

有許多不同的方法來做到這一點,但這裏的一個。它將更新它找到的前兩個跨度的內容。

要知道正確的解決方案,您需要在問題中提供更多信息。