Are events lost in jQuery when you remove() an element and append() it elsewhere?

后端 未结 3 1480
隐瞒了意图╮
隐瞒了意图╮ 2021-02-18 14:35

What happens in jQuery when you remove() an element and append() it elsewhere?

It appears that the events are unhooked - as if you were just inserting fresh html (which

3条回答
  •  独厮守ぢ
    2021-02-18 15:30

    Yes, jQuery's approach with remove() is to unbind everything bound with jQuery's own bind (to prevent memory leaks).

    However, if you just want to move something in the DOM, you don't have to remove() it first. Just append to your heart's content, the event bindings will stick around :)

    For example, paste this into your firebug on this page:

    $('li.wmd-button:eq(2)').click(function(){ alert('still here!') }).appendTo(document.body)
    

    And now scroll down to the bottom of this page and click on the little globy icon now buried under the SO footer. You will get the alert. All because I took care to not remove it first.

提交回复
热议问题