2012-11-04 36 views
1

我試圖替換HTML element我通過它的索引得到的,我想這與它的指數更換一個HTML元素,但它不會工作:通過jQuery

<div class="results"> 
    <div id="61">Result 1 content</div> 
    <div id="8762">Result 2 content</div> 
    <div id="234">Result 3 content</div> 
</div> 

<script> 
    var index = 0; 
    var html = '<div id="243">Result 1 content</div>'; 
    var element = $('.results').get(index); 
    element.replaceWith(html); 
</script> 

我怎麼能更換整個HTML element得到它的index

+2

你爲什麼要更換隻是改變其ID的所有元素? –

+1

哦,是的,只是用所有這些變量污染全局名稱空間。我確信沒有什麼可以出錯的。 ':P'(使用函數包裝器,大聲哭泣) –

+0

這只是一個例子,我需要通過'each'或者通過'for'來完成,具體情況取決於情況,有時候我會得到一個結果列表'JSON',我需要將由0開始的元素替換爲##。在其他情況下,我只需要在運行時更新它們。 – vitto

回答

3
$('.results div').eq(index).replaceWith(html); 

Fiddle

您應該使用.eq()其索引到匹配的元素篩選jQuery對象內。另外$('.results')只有1個元素(本身)。我假設你正在尋找裏面的div


此外,如果你有你的div S的內部div S,使用更具體child selector

$('.results > div').eq(index).replaceWith(html); 

其中有與使用.children method與選擇濾鏡效果相同:

$('.results').children(':eq(' + index + ')').replaceWith(html); 

或者更簡單地說,將它連接在一個選擇器中:

$('.results > div:eq(' + index + ')').replaceWith(html); 

Fiddle

還有許多其他的方式來得到這個使用jQuery做,但這些應該是綽綽有餘。 =]

1

.get檢索索引處的DOM元素。你要找的是什麼.eq

0
var index = 0 
$($('.results div')[index]).replaceWith('<div id="243">Result 1 content</div>') 
0
var element = $('.results').find('div');