【问题标题】:Removing elements of list using parent/child使用父/子删除列表元素
【发布时间】:2012-07-27 20:01:13
【问题描述】:

我希望从几个连接的 ul 列表中动态删除 li 元素。现在我正在使用 $("#sortable1").children().on('dblclick',function() {...}) 分配“dblclick”事件行为

#sortable1 中的项目将被用户移动到其他列表(#sortable2、#sortable3 等)。

当一个列表项被双击时,会弹出一个对话框询问用户是否要删除它。如果用户说是,我希望将列表项从它所在的任何列表中删除。我正在尝试使用以下方法:

$($(this).parent().childNodes[$(this).index()]).remove()

但这不起作用。

建议?

【问题讨论】:

  • 向我们展示函数是如何工作的,复制/移动的列表项是如何相互连接的?类名,data-* 属性?您有我们可以在JS FiddleJS Bin 或类似网站上看到的现场演示吗?
  • 所以要删除被双击的项目?处理程序内部的 $(this).remove() 不会这样做吗?
  • 我认为他希望在点击弹出切换后发生。
  • @MatthewBlancarte 应该没问题,他只需要在双击时存储 $(this) 然后稍后使用它。哦,也许他想从几个 ul 中删除它,而不是仅仅点击一个。需要查看更多标记
  • 能否提供更多代码?我想你可能把事情复杂化了。这是我相信您正在做的一个简单示例:jsbin.com/ixemuw/2/edit

标签: javascript jquery jquery-ui html-lists


【解决方案1】:

这样的事情应该可以工作。

var showPopup = function( elem ){
  //show your popup with a function like this, as i assume it already does...      
  $( '#delete_toggle' ).one( 'click', function(){
    elem.remove();
  });
};

$("#sortable1").children().on('dblclick',function(){
  showPopup( $(this) );
});

【讨论】:

    【解决方案2】:

    要移除被点击的元素,您只需在事件处理程序中使用它:

    $(this).remove();
    

    或者,如果您已将元素引用保存到变量 elem,它将是:

    $(elem).remove();
    

    你试图让它变得比需要的更复杂。 jQuery .remove() 方法查看其当前父级是谁,并为您处理所有这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多