如何用jQuery替换HTML但保留事件绑定

时间:2013-05-17 04:00:01

标签: javascript jquery

这是一个战略问题,而不是具体的问题,但我认为这是正确的问题所以:

假设我有一个页面或ap有3个单独的部分。对表单的一部分进行更改会向服务器发送一个ajax帖子,这需要在第二部分进行更改。我想发回第2部分的重新处理的HTML输出,并将其替换为第2部分的原始状态

但是,第2部分有很多元素可以更改,点击,拖动等等绑定 - 根据我做html替换时的经验,我失去了所有绑定。

但是,这使我在第2部分中的许多元素中单独重写某些内容,以免丢失绑定。

知道这是一个更容易的方法,似乎是一个常见的问题。任何人都可以向我提供这个问题的“aha”部分,或许还有一些例子或链接?我真的很感激。

2 个答案:

答案 0 :(得分:5)

您需要将问题分为两个部分

处理事件
这可以使用$.on()使用事件委派来完成。即,而不是在您在父母身上注册的元素上注册事件,而不会被删除 例如:

$('.container').on('click', 'a', function(){
    //do something
})

处理可拖动的小部件
在这里,我认为你运气不好,因为除了添加新的dom元素之后,我没有看到任何其他方式来重新初始化这些小部件。 例如:

var ct = $('.container').html('');
ct.find('li').draggable({})

答案 1 :(得分:4)

您可以使用Event Delegation,因此您无需重新绑定。