【问题标题】:Remove an added element with jquery使用 jquery 删除添加的元素
【发布时间】:2013-05-06 02:11:28
【问题描述】:

我想要完成的两件事。 1)使用克隆方法我希望用户能够添加多个文本框项目,并在文本框旁边添加一个删除链接,而不是像现在这样在它下方。 2)。单击“删除”链接时,我想删除父列表项并删除链接。我四处寻找答案,但没有找到答案。另外,如果比克隆更好的方法可行,我愿意提供建议和解释。

My jsfiddle code:

$('#click').click(function(){
var clone = $('li:last').clone()
if(!clone.find('.del')[0]) clone.append('<a href="#" class="del">Delete</a>')

clone.appendTo('ul');
    });

$('ul').on('click', 'li .del', function(){
     $(this).closest('li').remove();
        });

【问题讨论】:

    标签: jquery clone add


    【解决方案1】:

    查看您更新的小提琴http://jsfiddle.net/juanpastas/56wuv/17/

    基本上你需要处理尚未创建的元素中的事件:

    $('ul').on('click', 'li .del', function(){
    

    为了使用这个选择器

    $(this).closest('li')
    

    您实际上需要将$(this),即.del 元素放入li 元素中

    var clone = $('li:last').clone().append('<a href="#" class="del">Delete</a>')
    clone.appendTo('ul');
    

    更新

    if(!clone.find('.del')[0]) clone.append('<a href="#" class="del">Delete</a>')
    
    clone.find('.del') // returns elements with del class inside the cloned element
    [0]                // gets the first element in these elements, undefined if no del elements found
    !                  // negates undefined, i.e. true,
    
    // so code enter if when there is no del element
    
    clone.append('<a...'  // append delete if there is no delete link
    

    【讨论】:

    • 我实际上做了 .append('Delete') clone.appendTo('ul');当我试图让它工作但它没有给出预期的结果时。 “删除”链接与每个克隆项目相乘。 :(
    • 还有一个问题......粘贴小提琴链接时我做错了什么?它对我大喊我需要标签才能使其成为链接。你们都把它当作一个链接。我不知道我做错了什么。
    • 按 ctrl+l 突出显示要链接的文本,但实际上您已经找到了绕过 SO 验证的方法,因为当我尝试编辑您的链接时,我不得不添加一些代码来伴随链接。
    • 查看更新的小提琴,我在它不存在时添加了删除if(!clone.find('.del')[0]) clone.append('&lt;a href="#" class="del"&gt;Delete&lt;/a&gt;')
    • 这让我很开心!我希望我能自己解决这些问题。如果你能放纵我,我真的很想对你添加的这句话做一个详细的解释……非常感谢!
    【解决方案2】:

    两件事:

    1)您仅在加载时绑定您的偶数,因此当您创建链接时,它没有任何操作,请使用jQuery on()。

    $(document).on('click', '.del',function(){...}
    

    2) 最接近的搜索父母,你想要以前的li,所以使用jQuery prev()

    这里有一个小提琴:http://jsfiddle.net/56wuv/15/

    【讨论】:

    • 非常感谢,当您看到它做得正确时才有意义。 :)。还有一件事,我怎样才能将“删除”链接移动到文本框的右侧?
    • 那么,使用append 代替add,然后将.prev('li') 改回.closest('li')。小提琴:jsfiddle.net/56wuv/19
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多