如何使用jQuery添加重复的div?

问题描述 投票:0回答:3

[当我使用jQuery单击新按钮时,它会添加div,但只会添加一个。当我从DevTools检查时,它会不断创建相同的位置。但我希望它之后再添加一个。你能帮我吗?

HTML代码

    <div class="text-left" style="margin-bottom: 15px;">
        <button type="button" class="add-extra-email-button btn btn-success" disabled><i class="fas fa-plus"></i></button>
    </div>

    <div class="clone"></div>

这里是示例js代码

    $('.add-extra-email-button').click(function() {
        var element = $('.clone');

        element.html(
            '<div class="clone_edilen_email">' +
                '<li>' +
                    '<a href="javascript:;"> Test' +
                    '<i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw"></i>' +
                    '</a>' +
                '</li>' +
            '</div>'
        );

        $('.clone_edilen_email').addClass('single-email remove-email');
        $('.single-email').append('<div class="btn-delete-branch-email"><button class="remove-field-email btn btn-danger"><i class="fas fa-trash"></i></button></div>');
        $('.clone_edilen_email > .single-email').attr("class", "remove-email");
    });


    $(document).on('click', '.remove-field-email', function(e) {
        $(this).parent('.btn-delete-branch-email').parent('.remove-email').remove();
        e.preventDefault();
    });
javascript jquery
3个回答
2
投票

如果我理解正确,您想一次有人单击<div class="clone_edilen_email">按钮一次又一次地添加.add-extra-email-button

[通常,调用element.html('<some_wild_html></some_wild_html>')将始终用element覆盖<some_wild_html></some_wild_html>的全部内部内容。另外,如果元素已经包含其他子元素,它们将会丢失。我想在给定的代码示例中,您的意图是扩展元素的html而不是替换它。

这是我的建议:

$('.add-extra-email-button').click(function() {
 var newDiv = $('<div class="clone_edilen_mail"></div>');
 newDiv.html('<li><a href="javascript:;"> Test<i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw"></i></li>');
 $('.clone').append(newDiv); // This is the important clue here!

 // afterwards you may insert your residual class stuff
 //  $('.clone_edilen_email').addClass('single-email remove-email'); <- I would suggest you add these classes already at the begining, where I set the variable "newDiv"
 // ...
 // $('.single-email').append('<div class="btn-delete-branch-email"><button class="remove-field-email btn btn-danger"><i class="fas fa-trash"></i></button></div>');
 // $('.clone_edilen_email > .single-email').attr("class", "remove-email");
});

// .. your other code may follow here ...
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="clone">I am a clone-div!</div>
<button class="add-extra-email-button">Click Me!</button>

希望对您有帮助!


0
投票

尝试此方法,使用jQuery .clone()方法附加重复的元素和内容

<!doctype html>
<html>
<head>
<title>jQuery Clone() – Add Elements and its Contents</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> 
</script>
<style>
    div {
        margin:3px;
        padding:3px;
        border:solid 1px #999;
        width:300px;
    }
 </style>
 </head>
<body>
<p>Click the button to clone (make a duplicate) of the DIV element!</p>
<div id="Container">Hello, how was your day!</div>
<p><input type="button" id="Button1" value="Clone it" /></p>
</body>
<script>
$(document).ready(function () {
    $('#Button1').on('click', function () {
        $('#Container')
            .clone()
            .appendTo("body");
    });
});
</script>
</html>

-1
投票

在您的第一次单击功能中,您替换了div克隆的所有内容,因此即使再次单击,您也只会拥有一个。他只是替换旧的。

我没有获得您要使用第二单击功能执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.