2012-12-25 19 views
1

我用jQuery克隆DOM元素,div與許多後代。在將克隆的div插入到DOM之前,我需要更改那些有後代的id屬性。我能爲元素做到這一點我知道的已經如下id(假設newElem是在插入前階段我的克隆元素):jQuery根據公式更改所有後代DOM ID

newElem.find('#question_0_0').attr('id', 'question_' + num1 + '_' + num2); 

我的問題是,div的一個部分被克隆的程序生成。本節中有很多(幾十個)div。在DOM插入之前,我需要在我的克隆的div中生成的id s的末尾修改數字,但我不知道每個id的開始將會在加載頁面之前。

我怎麼能寫的東西有效地捕獲所有元素與id S IN _0_0結束(股利的第一部分是未知的),並改變那些id s到〜什麼〜_ + num1_num2?我知道我可以使用通配符來捕獲以_0_0結尾的所有元素,但我不知道如何在重寫ID時重用該「捕獲的」通配符部分。

+0

你能發佈你的HTML嗎? – Blender

回答

2
$('[id$=_0_0]').prop('id', function(){ 
    var x = $(this).prop('id').split('_')[0]; //part before _0_0 
    return x +'_'+ num1 + '_' + num2; 
}); 
+0

'prop'方法接受2個參數,索引和oldProperty,不需要在這裏創建一個jQuery對象,使用'prop'方法+1。 – undefined

+0

這很好 - 謝謝。實現後,我意識到需要修改的某些id包含'_0_0'字符串後面的一些內容,所以我修改如下: 'newElem.find('[id * = _ 0_0]')。prop('id ',function(){var x = $(this).prop('id').span('_ 0_0',2); return x [0] +'_'+ num1 +'_'+ num2 + x [1]; });' –

1
$('[id$="_0_0"]').prop('id', function(index, currentID) { 
    return 'question_' + num1 + '_' + index; 
})