jQuery.remove()没有删除元素

时间:2016-02-22 21:12:47

标签: jquery

我正在页面上动态创建一个小部件(带有子div和锚的父div),我想根据用户对div的单击操作(显示为关闭按钮)从页面中删除小部件。小部件的子div。

“关闭按钮”的事件处理程序使用以下命令绑定到此元素:

$("#elemID").on('click', callbackFunc) 

当调用callbackFunc时,它会调用另一个函数来使用以下命令从页面中删除小部件(关闭按钮的父级):

$("#elemIdOFWidget").remove();

但会生成以下错误:

  

未捕获的TypeError:无法读取undefined(...)的属性'origType'

如果我使用调试器尝试直接删除窗口小部件,则会生成相同的错误。 有趣的是,detach确实可以在同一个元素上运行而没有错误:

$("#elemIdOFWidget").detach();

我的问题:

  • 产生的错误是什么意思?

  • 为什么remove()不对元素起作用,但是detach()呢?

  • 此外,似乎我使用普通的javacript将事件处理程序附加到“关闭按钮”,例如:

    closeButtonElem.addEventHandler('click',callbackFunc)

然后,remove()工作正常:

$("#elemIdOFWidget").remove();

但为什么不同?

提前谢谢。

这里还有一张我使用调试器在另一个元素上测试它的图像。第一次尝试使用

删除元素
$(".siteTitleClass").remove()

.remove()工作正常,但是在我重新加载页面后,只要我使用jQuery将事件处理程序绑定到同一个元素,之后.remove()方法就会生成错误。必须有一些东西将事件处理程序绑定到元素会导致.remove()方法失败。有什么想法吗?

removing element using Chrome debugger after binding event handler using jQuery

1 个答案:

答案 0 :(得分:0)

.detach()保留与删除的元素关联的所有jQuery数据。当删除的元素稍后要重新插入DOM时,此方法很有用。

.remove()删除了所有内容,可能不是你想要的动态组件。