我正在尝试使用 jQuery 创建一个动态复制的字段:
HTML (PHP) 代码:
<div id="widget_dup">
<p>
<textarea class="code" cols="50" rows="5" id="o99_brsa_settings[brsa_dash_wdgt_content]" name="o99_brsa_settings[brsa_dash_wdgt_content]" value="<?php //echo $o99_brsa_options['brsa_dash_wdgt_content']; ?>"/><?php
echo $o99_brsa_options['brsa_dash_wdgt_content'];
?></textarea>
<label class="description" for="o99_brsa_settings[brsa_dash_wdgt_content]">
</br><?php _e('Content for 1st widget', 'o99-brsa-domain'); ?>
</label>
</p>
</div>
<div id="addScnt">add</div><div id="remScnt">remove</div>
JS 是根据我发现的一些片段组装而成的:
<script type="text/javascript">
//http://jsfiddle.net/obmero99/ZD9Ky/
// <![CDATA[
jQuery(function() {
var scntDiv = jQuery('#widget_dup');
var prevDiv = scntDiv.html();
var i = jQuery('#widget_dup p').size() + 1;
jQuery('#addScnt').live('click', function() {
jQuery(prevDiv).appendTo(scntDiv);
i++;
//alert (prevDiv);
return false;
});
jQuery('#remScnt').live('click', function() {
if( i > 2 ) {
jQuery(this).parents('p').remove();
i--;
}
return false;
});
});
// ]]>
</script>
问题是这段代码可以复制字段,但不会更改 ID、名称和其他属性(ID
、NAME
、FOR
等..)
我尝试过:jQuery(this).attr('id')+i;
和 jQuery(this).attr('name')+i;
,但它没有按我的意图工作。事实上,它根本不起作用。 :-)
当理论尚不存在时,如何修改字段的 attr()
?
根据评论: fiddle 在这里:http://jsfiddle.net/obmerk99/uZuWA/
最佳答案
设置属性的正确用法是
$(this).attr('id', i);
您应该知道,正如 Ian 所建议的那样,更好的用法是使用 clone()
!
使用 .clone
进行演示
关于javascript - JS - jQuery 动态添加和删除字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372496/