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

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

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

但是,第2部分有很多元素可以改变,点击,拖动等等绑定 – 而且当我进行html替换时,我失去了所有绑定。

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

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

您需要将问题分为两部分

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

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

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

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

您可以使用事件委派 ,因此您不必重新绑定。