我正在页面上动态创建一个小部件(带有子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
答案 0 :(得分:0)
.detach()保留与删除的元素关联的所有jQuery数据。当删除的元素稍后要重新插入DOM时,此方法很有用。
.remove()删除了所有内容,可能不是你想要的动态组件。