【问题标题】:JQuery remove() does not remove an elementJQuery remove() 不删除元素
【发布时间】:2014-02-10 09:47:22
【问题描述】:

我做了一个表格来添加和删除两个文本字段(输入文本和选择)。添加效果很好,但 remove() 不行。

这是一个包含所有必要元素的模板表单,这些元素将由函数 addRow() 添加:

<div class="container-fluid" >
<div class="row data-container">
    <div class="col-md-1 col-sm-1"></div>
        <div class="col-md-10 col-sm-10">
            <div class="col-md-3 col-sm-3">
                text
            </div>
                <div class="col-md-9 col-sm-9">
                <div id="itemRows">
                    <div class="col-xs-5">
                        <input type="text" class="input-txt" placeholder="Heli Kopter">
                    </div>
                    <div class="col-xs-5">
                        <select class="input-txt">
                              <option>Projektijuht</option>
                              <option>Kujundaja</option>
                              <option>Arendaja</option>
                        </select>
                    </div>
                    <div class="col-xs-2"></div>
                </div>
                </div>  
        </div> <!-- /.col-md-10 col-sm-10 -->
    <div class="col-md-1 col-sm-1"></div>
</div>

这是一个模板,我想在其中添加元素。就在 col-md9 col-sm-9 之后:

<div class="container-fluid" >
<div class="row data-container">
    <div class="col-md-1 col-sm-1"></div>
        <div class="col-md-10 col-sm-10">
            <div class="col-md-3 col-sm-3">
                text
            </div>
                <div class="col-md-9 col-sm-9">
                    <input onclick="addRow(this.form);" type="button" value="Add row" />
                </div>
        </div>
    <div class="col-md-1 col-sm-1"></div>
</div>

这是 jquery 源。 addRow 效果很好,但是 remove 功能不起作用:

    var rowNum = 0;

    function addRow(frm) {
        rowNum++;
        var row = '<p id="rowNum' + rowNum + '"><div class="col-xs-5" style="background-color:red;"><input type="text" class="input-txt" placeholder="Heli Kopter"></div><div class="col-xs-5" style="background-color:yellow;"><select class="input-txt"><option>Projektijuht</option><option>Kujundaja</option><option>Arendaja</option></select></div><div class="col-xs-2" style="background-color:red;"><input type="button" value="Remove" onclick="removeRow(' + rowNum + ');"/></div> </p>';
        jQuery('#itemRows').append(row);
        frm.add_qty.value = '';
        frm.add_name.value = '';
    }

    function removeRow(rnum) {
        /* $("p:last-child").remove(); */
        jQuery('#rowNum' + rnum).remove();
    }

你能帮我修理一下吗? 谢谢!

【问题讨论】:

  • 浏览器控制台中的任何错误
  • 确保函数removeRow在全局范围内可用
  • 无效的 html,您不能在

    中包装 div。您只会删除 p 元素而不是其他元素。这里使用 div 代替

    jsfiddle.net/6cgJ8

  • 你能链接到jsfiddle.net吗?
  • 你的removeRow 被调用好吗?在此处添加一些警报或更好的console.log(...),查看rnum 的值是多少以及jQuery('#rowNum' + rnum).length 是否为0。

标签: jquery


【解决方案1】:

addRow 函数更改为:

function addRow(frm) {
    rowNum++;
    var row = '<div id="rowNum' + rowNum + '"><div class="col-xs-5" style="background-color:red;"><input type="text" class="input-txt" placeholder="Heli Kopter"></div><div class="col-xs-5" style="background-color:yellow;"><select class="input-txt"><option>Projektijuht</option><option>Kujundaja</option><option>Arendaja</option></select></div><div class="col-xs-2" style="background-color:red;"><input type="button" value="Remove" onclick="removeRow(' + rowNum + ');"/></div> </div>';
    jQuery('#itemRows').append(row);
    frm.add_qty.value = '';
    frm.add_name.value = '';
}

问题正如评论中提到的那样,&lt;p&gt; 无法包装&lt;div&gt;,因此&lt;p&gt; 立即关闭。这是一个小提琴:http://jsfiddle.net/M4U5F/

【讨论】:

  • 有效!非常感谢!我提到

    有问题,但是当我简单地用

    更改它时,我网页上的所有内容都被删除了。感谢您的帮助!
猜你喜欢
  • 2013-07-18
  • 2016-07-07
  • 2015-06-15
  • 2020-11-01
  • 2010-12-02
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
相关资源
最近更新 更多