興味深いもの。私は、ユーザーがサービスを追加または削除でき、DOM に到達し、HTML 要素をコピーし、それとその子の ID の両方の末尾に値を追加する必要がある、大きなモジュラー フォームに取り組んでいます。
たとえば、次のようになります。
<li id="serviceModule" class="serviceModule">
<ol>
<li id="subModuleTypeA">subModule</li>
<li id="subModuleTypeB">
<ol>
<li id="subModuleTypeASubModuleX">subSubModule</li>
<li id="subModuleTypeASubModuleY">subSubModule</li>
<li id="subModuleTypeASubModuleZ">subSubModule</li>
</ol>
</li>
<li id="subModuleTypeC">subModule</li>
</ol>
</li>
次のようになります。
<li id="serviceModule1" class="serviceModule">
<ol>
<li id="subModuleTypeA1">subModule</li>
<li id="subModuleTypeB1">
<ol>
<li id="subModuleTypeASubModuleX1">subSubModule</li>
<li id="subModuleTypeASubModuleY1">subSubModule</li>
<li id="subModuleTypeASubModuleZ1">subSubModule</li>
</ol>
</li>
<li id="subModuleTypeC1">subModule</li>
</ol>
</li>
価値を付加する方法:
$.fn.valulator = function(magic){
var thiis = $(this),
el,
id;
thiis.add(thiis.children()).each(function(){
el = $(this);
id = el.attr('id');
el.attr('id', id + magic);
});
return this;
};
トリガーするバインディングvalulator
:
$add.click(function(event){
event.preventDefault();
$index = $index + 1;
$('.serviceModule')
.clone()
.valulator($index)
.appendTo('#services');
});
ご協力いただきありがとうございます!ここに jsFiddle があります: http://jsfiddle.net/phqvr/3/
アップデート
私が遭遇した最初の問題valulator()
は、children()
直接の子孫のみを表示することです..代わりに、すべての要素を検索する必要があります。