Jquery克隆和appendto为父元素

时间:2013-06-11 07:15:53

标签: javascript jquery

我有3个单选按钮,可以打开各个div。所有3个div都有输入框,可以通过单击输入框旁边的添加按钮来添加。

现在的问题是,

输入框应仅在相应的无线电检查div中添加,但现在它适用于所有3个div输入框。如果您检查任何一个单选按钮并单击输入旁边的添加按钮,添加几个输入框然后转到另一个单选按钮,您可以看到同样的操作也应该实际上不对。

这是代码和小提琴

$filtr = $('.filtr');

        $filtr.on('click', '.add', function(){
            $(this).closest('.loop').clone().appendTo( $('.test') );
        });

        $filtr.on('click', '.del', function(){
           $(this).closest('.loop').remove();
        });

        $('#1lev, #2lev, #3lev').hide();

DEMO

2 个答案:

答案 0 :(得分:4)

看看这里:http://jsfiddle.net/VMBtC/2/

我改变了这个:

$filtr.on('click', '.add', function(){
    $(this).closest('.loop').clone().appendTo( $('.test') );
});

到此:

$filtr.on('click', '.add', function(){
    $(this).closest('.loop').clone().appendTo( $(this).closest('.test') );
});

希望有所帮助


修改

单选按钮改进:点击此处 - > http://jsfiddle.net/VMBtC/3/

<强> JS

$(":radio").click(function(){
     $(".test").hide();
     var show = $(this).attr("data-show");
     $("#"+show).show(300)
});

<强> HTML

<label><input name="1 Level" type="radio" value="0" data-show="1lev" />1 Level</label>
<label><input name="1 Level" type="radio" value="1" data-show="2lev" />2 Level</label>
<label><input name="1 Level" type="radio" value="2" data-show="3lev" />3 Level</label>

答案 1 :(得分:2)

使用$(this).closest('.loop').clone().appendTo( $(this).closest('.test') );,否则您将添加到每个 .test元素。