简体   繁体   English

使用JavaScript / JQuery将HTML重新添加到DIV中

[英]re-adding HTML into a DIV using JavaScript/JQuery

Hi All I have the following Div as seen below: 大家好我有以下Div,如下所示:

<div id = '1'>
    <div>
        <div>
            <label class="right inline">Response:</label>
        </div>
        <div>
            <input type="text" name="responseText[]" value="" maxlength="400" />                          
        </div>
         <div>
            <input type="radio" name="responseRadio[]" value="" />                          
         </div>
    </div>
    <div>
        <input type="button" name="addNewRow" value="Add Row" />                      
    </div>
</div>

when the user clicks on the button, I want to add the following Divs again: 当用户单击按钮时,我要再次添加以下Div:

        <div>
            <div>
                <label class="right inline">Response:</label>
            </div>
            <div>
                <input type="text" name="responseText[]" value="" maxlength="400" />                          
            </div>
             <div>
                <input type="radio" name="responseRadio[]" value="" />                          
             </div>
        </div>

Is this possible to achieve with JavaScript or the jQuery onclick function? 使用JavaScript或jQuery onclick函数能否实现?

Try this: 尝试这个:

<script>
$(document).ready(function(){
    var divID='abc';
    var $mainDiv=$('#'+divID);
    $mainDiv.find('input[name="addNewRow"]').eq(0).click(function(){
        var $this=$(this);
        var $div=$(this).parents('div').eq(0).prev('div').clone();
        $this.parents('div').eq(0).prev('div').after($div);
    });
});
</script>

Demo: http://jsfiddle.net/xT62m/ 演示: http//jsfiddle.net/xT62m/

You can use clone method with insertAfter : 您可以对insertAfter使用clone方法:

HTML: HTML:

<div id='1'>
    <div class="template"> <!-- mark a clone target -->
        ...
    </div>
    <div>
        <input type="button" name="addNewRow" value="Add Row" />
    </div>
</div>

JS: JS:

var $template = $('.template');
$('input[type=button]').click(function() {
    $template.clone().insertAfter($template);
});

Demo: http://jsfiddle.net/VcBrz/ 演示: http//jsfiddle.net/VcBrz/

Yes, use the jquery append functionality https://api.jquery.com/append/ 是的,请使用jquery附加功能https://api.jquery.com/append/

$('#1').append(html);

Here is a working jsfiddle http://jsfiddle.net/ZqQAu/1/ 这是一个工作的jsfiddle http://jsfiddle.net/ZqQAu/1/

The best way is to clone that div which you want to add to div#1 . 最好的办法是克隆该div要添加到div#1

For easier manipulation, please add classes to div with button and to each div which represents row. 为便于操作,请通过按钮将类添加到div ,并将每个类添加到表示行的div中。

HTML: HTML:

<div id = 'id1'>
    <div class='row'>
        <div>
            <label class="right inline">Response:</label>
        </div>
        <div>
            <input type="text" name="responseText[]" value="" maxlength="400" />                          
        </div>
         <div>
            <input type="radio" name="responseRadio[]" value="" />                          
         </div>
    </div>
    <div class='buttonHolder'>
        <input type="button" name="addNewRow" value="Add Row" />                      
    </div>
</div>

Javascript (with jQuery): Javascript(使用jQuery):

$(document).ready(function(){


    $('.buttonHolder input[type=button]').on('click', function(){
        //Clone existing row to template.
        var row = $('#id1 .row').first().clone(); 

        //Clear template
        $('input', row).val('');    

        $(row).insertBefore('.buttonHolder input[type=button]');
    });
});

jsFiddle example: http://jsfiddle.net/9Z2RT/1/ jsFiddle示例:http://jsfiddle.net/9Z2RT/1/

make html like this: 使html像这样:

<div id="container">
<div class= 'template'>
    <div>
        <div>
            <label class="right inline">Response:</label>
        </div>
        <div>
            <input type="text" name="responseText[]" value="" maxlength="400" />                          
        </div>
         <div>
            <input type="radio" name="responseRadio[]" value="" />                          
         </div>
    </div>
    </div>
</div>

<div>
        <input type="button" name="addNewRow" id="btnAddRow" value="Add Row" />                      
</div>

Click Function: 点击功能:

$('#btnAddRow').click(function(){


var row = $('.template').first().clone();

$('#container').append(row);

});

Here is Fiddle DEMO 这是小提琴演示

The simpliest way will be: 最简单的方法是:

<!DOCTYPE HTML>

<html>
    <head>
        <title>Untitled</title>
        <script>
            var m_TextToAdd = '<div> ';
            m_TextToAdd += '<div> ';
            m_TextToAdd += '    <label class="right inline">Response:</label>';
            m_TextToAdd += '</div>';
            m_TextToAdd += '<div>';
            m_TextToAdd += '    <input type="text" name="responseText[]" value="" maxlength="400" /> ';
            m_TextToAdd += '</div>';
            m_TextToAdd += ' <div>';
            m_TextToAdd += '    <input type="radio" name="responseRadio[]" value="" />';
            m_TextToAdd += ' </div>';
            m_TextToAdd += '</div>';
            function AddContent() {
                document.getElementById('div1').innerHTML += m_TextToAdd;
            }

        </script>
    </head>

    <body>
        <div id = 'div1'>
            <div>
                <div>
                    <label class="right inline">Response:</label>
                </div>
                <div>
                    <input type="text" name="responseText[]" value="" maxlength="400" />                          
                </div>
                 <div>
                    <input type="radio" name="responseRadio[]" value="" />                          
                 </div>
            </div>
            <div>
                <input type="button" name="addNewRow" value="Add Row" onclick='AddContent();'/>                      
            </div>
        </div>
    </body>
</html>

Anyhow, it heart my eyes to see it :-) I think the next code is more readable: 无论如何,我很高兴看到它:-)我认为下一个代码更具可读性:

<!DOCTYPE HTML>

<html>
    <head>
        <title>Untitled</title>
        <script type='text/javascript'>
            function AddContent() {
                var dest = document.getElementById('div1');
                //add label
                var lbl = document.createElement('label');
                lbl.innerHTML = 'Response:';
                lbl.className = 'right inline';
                dest.appendChild(lbl);
                //add line break
                dest.appendChild(document.createElement('br'));

                //add text input
                var input = document.createElement('input');
                input.type = 'text';
                input.name = 'responseText[]';
                input.maxlength="400";
                dest.appendChild(input);
                //add line break
                dest.appendChild(document.createElement('br'));

                //add radio button
                input = document.createElement('input');
                input.type="radio";
                input.name="responseRadio[]";
                dest.appendChild(input);
                //add line break
                dest.appendChild(document.createElement('br'));
            }

        </script>
    </head>

    <body>
        <div id = 'div1'>
            <label class="right inline">Response:</label>
            <br>
            <input class='nextLine' type="text" name="responseText[]" value="" maxlength="400" />                          
            <br>
            <input class='nextLine' type="radio" name="responseRadio[]" value="" />                          
            <br>
            <input class='nextLine' type="button" name="addNewRow" value="Add Row" onclick='AddContent();'/>                      
            <br>
    </body>
</html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM