Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery-无法删除附加的div_Jquery - Fatal编程技术网

jQuery-无法删除附加的div

jQuery-无法删除附加的div,jquery,Jquery,大家好,提前谢谢你们的帮助。我尝试动态创建和删除输入字段,它们创建得很好,但当我尝试删除它们时,它似乎找不到创建的div,并删除它上面的div,从而删除所有输入,而不仅仅是一个 这是我的jscript: $("#addp").live('click' ,(function() { var partid = $('#partlist').val(); var partname = $("#partlist option:selected").text(); $('<d

大家好,提前谢谢你们的帮助。我尝试动态创建和删除输入字段,它们创建得很好,但当我尝试删除它们时,它似乎找不到创建的div,并删除它上面的div,从而删除所有输入,而不仅仅是一个

这是我的jscript:

$("#addp").live('click' ,(function() {
    var partid = $('#partlist').val();
    var partname = $("#partlist option:selected").text();
    $('<div>').appendTo('#parts');
    $('<label for="parts" class="left">' + partname + ': </label>').appendTo('#parts'); 
    $('<input type="text" name="part[' + partid + ']">').appendTo('#parts');
    $('<input type="button" class="removepart" value="X">').appendTo('#parts');
    $('</div">').appendTo('#parts');
    numparts++;
})); 

$(".removepart").live('click', (function () {
    $(this).closest('div').remove();
}));
和HTML

<p class="edit">Parts Used</p>
<label for="parts" class="blank">Search for a Part</label>
<input type="text" name="partsearch" id="searchp_box" /> 
<input type="button" id="searchp_button" name="search" value="Search">
<br/>
<label for="parts" class="blank">Parts Used</label>
<select name="parts" id="partlist">
</select>
<input type="button" name="search" id="addp" value="Add Part">
<br>
<div id="parts">
</div>
它应该删除最近的div,该div是在您按下add按钮时创建的,但是它会删除整个div id=parts

我四处搜索,被告知使用.live,但它似乎不起作用:


感谢阅读:

当jquery追加或追加到的时候,它将尝试创建DOM元素,这意味着这行:

$('<div>').appendTo('#parts');
使此html:

<div id="parts">
<div></div>
</div>
因此,该行之后的所有内容都根本不在新DIV中,之后会不断添加。您可以在FF/Firebug Chrome/Inspect元素IE/Developer工具中进行验证

我要做的是将您的新部件生成一个字符串,然后附加该字符串:

    $("#addp").live('click' ,(function() {
        var partid = $('#partlist').val();
        var partname = $("#partlist option:selected").text();
        var newPart = '<div> \
                       <label for="parts" class="left">' 
                       + partname + ': </label> \
                       <input type="text" name="part[' + partid + ']"> \
                       <input type="button" class="removepart" value="X"> \
                       </div>';
        $(newPart).appendTo('#parts');
        numparts++;
    })); 

$(".removepart").live('click', (function () {
    $(this).closest('div').remove();
}));

你们有id为parts的重复元素吗?我的命名现在看起来很草率,但似乎只有一个id=parts谢谢!一般来说,我对jscript相当陌生,所以这些DOM函数有时会让我感到困惑。万圣节快乐:D+1表示正确。但为了可读性和速度,我宁愿使用$.appendchild1.appendchild2…appendchildn.appendTo'parts.@Chetan I假设多个附录对速度不利。。。似乎找不到更好的链接,但有一些快速测试。您是对的,但如果您在live DOM上执行,则多个附件是不好的。在本例中,您是在将div添加到DOM之前执行附加操作的。jQuery在内部使用DocumentFragment进行操作,然后将该片段添加到DOM中,从而只接触DOM一次。除了解析所有HTML时的非常小的开销外,您的方法的性能几乎相同。但它可读性较差,而且容易出错。