8

这更像是一个战略问题,而不是一个具体的问题,但我认为它被精确地问到了,所以这里是:

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

但是,第 2 部分有许多元素具有更改、单击、拖动等绑定 - 从我进行 html 替换时的经验来看,我丢失了所有绑定。

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

知道有一种更简单的方法可以解决这个问题,这似乎是一个常见问题。谁能向我提供这个问题的“啊哈”部分,也许还有一些例子或链接?对此,我真的非常感激。

4

2 回答 2

7

您需要将问题分为两部分

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

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

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

var ct = $('.container').html('');
ct.find('li').draggable({})
于 2013-05-17T04:08:00.247 回答
6

您可以使用Event Delegation,因此您不必重新绑定。

于 2013-05-17T04:04:05.060 回答