为什么几个块在克隆后无效?

时间:2014-10-18 19:39:19

标签: javascript jquery drag-and-drop

如果这个问题草拟得很草率,我道歉。我刚刚开始理解jquery。

我想基于拖放实现表单构建器。

我添加了克隆掉落元素的按钮。 但克隆后#34;删除"和"克隆"按钮不起作用。

jsfiddle.net/284mx1vn /

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我刚刚调整了您的Fiddle

我添加了两行

$(document).on("click", ".remove", function(){
  $(this).closest(".input-block").remove();});
$(document).on("click", ".add", function(){
  $(this).closest(".input-block").clone().appendTo("#drop-space");
});

因此它适用于动态创建的元素,并为方便起见将“add”类添加到“add”按钮。
问题是,当加载文档时,事件必须绑定到DOM中已存在的元素。作为解决方案,可以使用事件委托 - 意味着从静态父元素委托事件(在这种情况下是按钮的单击事件),例如, $(document)。这个父元素将使用jquery on()函数将事件委托给该类的所有子元素,即使这些元素稍后添加。
供参考:http://api.jquery.com/on/https://api.jquery.com/on/#on-events-selector-data-handler,“直接和委派活动”部分:

  

“事件处理程序仅绑定到当前选定的元素;它们必须存在于代码调用.on()时页面上。”