【问题标题】:Adding element to div dynamically doesn't get parsed动态添加元素到 div 不会被解析
【发布时间】:2014-02-16 23:01:17
【问题描述】:

我有一个 div,它有多个子 div 或面板,在页面加载时,它们附加了样式,将它们以正确的方式放置在页面上。我有一个添加新面板的按钮,但该面板没有添加必要的样式。 (方法是jQueryinsertAfter函数)。我使用的是 Syrena Admin 模板,所以我不知道调用函数来重新解析元素。有没有办法像重新加载页面一样重新加载 div?换句话说,有没有办法只重新加载页面的一部分?

HTML

<div class="magic-layout isotope">
    <div id="panel2" class="panel panel-default magic-element isotope-item">
        <div class="panel-heading">
            <span class="panel-title">Additional</span>
        </div>
        <div class="panel-body">
            <div class="form-group">
                <input type="text" name="role[]" placeholder="Role" class="form-control" display="text" /> 
                <input type="text" name="first_name[]" placeholder="First Name" class="form-control"  display="text"/>

                <input type="text" name="last_name[]" placeholder="Last Name" class="form-control"  display="text"/>
                <input type="text" name="phone[]" placeholder="Phone Number" class="form-control" display="text" />
            </div>
            <div class="form-group">
                <input type="text" name="address_line_1[]" placeholder="Address Line 1" class="form-control"  display="text"/>
                <input type="text" name="address_line_2[]" placeholder="Address Line 2" class="form-control"  display="text" value=""/>
                <input type="text" name="line_3[]" placeholder="City, State Zip" class="form-control"  display="text"/>
                <input type="hidden" name="contact_id[]" value="">
            </div>
        </div>
    </div>

    <additional></additional>
    <div id="panel2" class="panel panel-default magic-element isotope-item">
        <div class="panel-heading">
            <button type="button" class="btn btn-info btn-block" onclick="addRow(this.form)">Add</button>
        </div>
    </div>
</div>

JS

var rowNum = 0;
function addRow(frm) {
    rowNum++;
    var row = '<div id="panel2" class="panel panel-default magic-element isotope-item"><div class="panel-heading"><span class="panel-title">Additional</span></div><div class="panel-body"><div class="form-group"><input type="text" name="role[]" placeholder="Role" class="form-control" display="text" /> <input type="text" name="first_name[]" placeholder="First Name" class="form-control"  display="text"/><input type="text" name="last_name[]" placeholder="Last Name" class="form-control"  display="text"/><input type="text" name="phone[]" placeholder="Phone Number" class="form-control" display="text" /></div><div class="form-group"><input type="text" name="address_line_1[]" placeholder="Address Line 1" class="form-control"  display="text"/><input type="text" name="address_line_2[]" placeholder="Address Line 2" class="form-control"  display="text" value=""/><input type="text" name="line_3[]" placeholder="City, State Zip" class="form-control"  display="text"/><input type="hidden" name="contact_id[]" value=""></div></div></div>';
    $(row).insertAfter('additional');
}

【问题讨论】:

  • 嗨!你能提供一些代码吗?
  • 当然。我会更新问题。
  • 没有&lt;additional&gt;&lt;/additional&gt;有效的HTML元素。
  • 是的,我知道我只是想要一个可以insertAfter 的标记,而不会影响其余代码。

标签: jquery html css insertafter


【解决方案1】:

我认为您的按钮的单击事件未正确绑定到您的函数addRow

不要从onclick="addRow(this.form)"绑定事件,而是尝试按如下方式创建点击事件:

$(function() {
    $("#mybutton").click(function() {
        addRow($(this));
    });
});

mybutton 是您的添加按钮:

<button type="button" class="btn btn-info btn-block" id="mybutton">Add</button>

这是一个 Fiddle,包括所做的更改:Fiddle

试试看告诉我:)

【讨论】:

  • 嗯,它一直在$(function(){ 行上给我一个$ is not defined 错误。我已经包含了 jQuery,你可以看到我已经使用了几行。有什么想法吗?
  • 你是在 header 标签中还是在 body 标签的末尾包含了 jQuery?
  • 哦,是的,在正文标签的末尾,我想这就是问题所在。
  • 我让你的代码工作了,但我仍然遇到和以前一样的问题。添加该部分后,只有页面的那部分需要重新加载。
猜你喜欢
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
相关资源
最近更新 更多