我有一个字段,我需要使用克隆按钮克隆并删除按钮以仅删除克隆的字段 我制作了这个简单的脚本,但我认为它包含了一些错误,因为它不起作用:)
HTML
<form method="post">
<div id="fileds">
<select name="lang" id='lang'>
<option>select language</option>
</select>
</div>
</form>
<div class="actions">
<button class="clone">Clone</button>
<button class="remove">Remove</button>
</div>
JS
$(function(){
var regex = /^(.*)(\d)+$/i;
var cloneIndex = $("#lang").length;
$("button.clone").live("click", function(){
$(this).parents("#lang").clone()
.appendTo(".fileds")
.attr("id", "lang" + cloneIndex)
.find("*").each(function() {
var id = this.id || "";
var match = id.match(regex) || [];
if (match.length == 3) {
this.id = match[1] + (cloneIndex);
}
});
cloneIndex++;
});
});
我也没有找到如何编写删除按钮的删除代码
谢谢
答案 0 :(得分:2)
1)#lang
不是.clone
2).fields
应为#field
,因为这是ID
此代码应该有效。直播Demo
$(function() {
var counter = 1;
$(".clone").live("click", function() {
$("#lang:first").clone().appendTo("#fileds").addClass("lang" + counter);
counter++
});
$(".remove").live('click', function() {
if (counter > 1) { //Only apply if the lang field is more than 1
counter = counter - 1;
$("#lang:last").remove();
}
});
});
答案 1 :(得分:0)
lang
不是按钮的父级,我已经为删除按钮添加了一个类和一个处理程序,试试这个:
$(function(){
$(".clone").on("click", function() { // you can use `on` instead of live which is deprecated
var cloneIndex = $(".lang").length; // you can find the the current length of `.lang` within the handler
$(".lang:last").clone() // clones the last element with class of `lang`
.attr("id", "lang" + cloneIndex)
.appendTo("#fileds") // change this to id selector
});
$("button.remove").on("click", function(){ // '.remove' click handler
$(".lang:last").remove()
})
});