2

我有一个文件,我需要使用克隆按钮和删除按钮来删除克隆文件,我只制作了这个简单的脚本,但我相信它包含一些错误,因为它不起作用:)

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++;
    });


});

我也没有找到如何为删除按钮编写删除代码

谢谢

4

2 回答 2

2

1)#lang不是父级.clone

2).fields应该是#field这样和ID

这段代码应该可以工作。现场演示

$(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();
        }
    });

});​
于 2012-07-06T04:15:45.177 回答
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()
     })  
});

演示

于 2012-07-06T04:20:17.937 回答