使用 jQuery 添加包括其所有元素的整个 div

4
使用jQuery,当点击事件发生时,我想要添加一个整个的div。我尝试过了,但它不起作用。
当用户点击“添加另一张图片”时,我希望附加整个div标签及其所有元素。
这是我的代码:
<form method="post" id="form_property" enctype="multipart/form-data">
    <div class="row">
        <div class="span4" id="image">
             <h3><strong>4.</strong> <span>Add Images to your Property</span></h3>

            <div class="fileupload fileupload-new control-group" data-provides="fileupload">
                <label class="control-label" for="inputPropertyPrice">Image files</label>
                <div class="input-append">
                    <div class="uneditable-input"> <i class="icon-file fileupload-exists"></i>
 <span class="fileupload-preview"></span>

                    </div> <span class="btn btn-file">
                                        <span class="fileupload-new">Select file</span>
 <span class="fileupload-exists">Change</span>

                    <input type="file" name="files1" accept="image/*" />
                    </span>
                </div>
            </div>
        </div>
        <!-- /.span4 -->
    </div>
    <!-- /.row -->
    <br/> <a id="another_image" class="btn btn-primary btn-small list-your-property" href="#">Add Another Image</a>
    <br/>
    <br/>
    <input type="submit" name="submit" value=" Save images " class="btn btn-primary btn-large" style="float: left; width: 370px; height: 50px; margin-top: 10px">
</form>

Jquery

    <script type="text/javascript">

    $(document).ready(function(){
        var count = 2;
        $('#another_image').click (function(){

            if(count < 7){
                $('<br/><br/>
                            <div class="input-append">
                                <div class="uneditable-input">
                                    <i class="icon-file fileupload-exists"></i>
                                    <span class="fileupload-preview"></span>
                                </div>
                                                    <span class="btn btn-file">
                                                        <span class="fileupload-new">Select file</span>
                                                        <span class="fileupload-exists">Change</span>
                                                        <input type="file" name="files'+ count +'" accept="image/*" />
                                                    </span>



                            </div>
                        ').appendTo ("#image");


            count++;
            }
        });
        });
    </script>

请问有人可以帮我修复这个问题吗?


你在开发者工具的HTML选项卡中检查过了吗?它是否被追加了? - Pawan
$('#image').append(yourHtml);我觉得这应该足够了 - suman
你的代码实际上运行良好。在这里可以看到它的运行效果:http://jsfiddle.net/Sourabh_/fn7o2LhL/ - Zee
但是在我的应用程序中它没有起作用。我检查了开发者工具,也没有附加。 - Sathya Baman
检查ID是否重复。 - suman
2个回答

10

使用.appendTo()clone()一起使用。

如果您不使用clone(),则相同的

将被替换,并且目标中不会更新内容。 您无需键入/复制整个HTML。

  

语法:$(Element_Selector).appendTo(TargetSelector)


$($('.input-append').first().clone()).appendTo("#image");

Fiddle

*注意:克隆现有html可能会创建重复的Id,请小心处理。


谢谢@shaunak,但它必须动态更改input type ='file'中的name ='files2'字段。这个能行吗? - Sathya Baman

4

我更喜欢@Shaunak的答案,它更有效率,但如果你想按照自己的方式进行,请查看此演示和以下代码。

$(document).ready(function(){
        var count = 2;
        $('#another_image').click (function(){

            if(count < 7){
                $('<br/><br/>' +
                  '<div class="input-append">' +
                  '<div class="uneditable-input">'+
                  '<i class="icon-file fileupload-exists"></i>' +
                  '<span class="fileupload-preview"></span>' +
                  '</div><span class="btn btn-file">'+
                  '<span class="fileupload-new">Select file</span>'+
                  '<span class="fileupload-exists">Change</span>' +
                  '<input type="file" name="files'+ count +'" accept="image/*" />'+
                  '</span></div>').appendTo ("#image");
            count++;
            }
        });
});

如果您查看DOM,名称会发生变化.. :) - Guruprasad J Rao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接