AJAX请求内的Javascript



我有一个AJAX函数的小问题:

  1. PAGE A代表页面。
  2. PAGE X表示加载的内容。
  3. RES A代表页面结果。
  4. RES B代表一些AJAX加载的内容=>新结果。

PAGE A包含20个结果,每个结果都可以被删除,并通过AJAX (PAGE X)加载一个新的结果。

的例子:

用户在A页:PAGE A加载js的"click"函数。->结果为RES A(20倍)。

当用户从RES a (1x)中删除一个结果时,AJAX加载一个新的结果RES B (1x):

用户仍然在页A上。--> PAGE X加载了js的"click"函数。->结果为RES B (1x)

为了将点击功能添加到RES B,我必须重新加载较轻的JS,但它会增加RES a的功能。

所以当用户从RES A中删除结果时(删除5个结果的1x5), RES B的结果乘以5x(用户得到5倍相同的结果而不是1x)。

你明白吗?简而言之,AJAX请求乘以x RES B,而不是坚持一个请求。你知道我怎样才能保留我的reb1x吗?

谢谢!

我认为你每次重新绑定点击事件,而"重新加载一个更轻的JS"。Javascript并没有替换事件函数——它们只是被连接起来了。如果你使用jQuery使用live添加点击事件。如果没有,在重新加载

之前清除当前点击事件

事件似乎被附加了多次。
使用unbind().click()unbind().bind('click')die().live(),无论你使用什么

您的解释确实难以理解,但如果我理解正确,您的问题在于您多次绑定相同的元素。

在你的情况下,最好的解决方案是使用jQuery .delegate('#datatable a', 'click', function(e){ /* DO STUFF */}),它允许绑定所有的选择器匹配元素一次(在这种情况下,例如,如果你有一个表id=datatable,它里面的每一个链接将始终绑定到该处理程序,即使你添加更多的html表,或删除一些),你不必担心它以后。

但是,如果您不使用jQuery,唯一的解决方案是在添加事件之前取消绑定(删除已经存在的绑定),然后再绑定它们。

您需要做的是在加载结果时处理结果(1x)。一种简单的方法是在加载结果时添加一个类,然后在加载完成后删除它。

$('.newresult .clickbutton').ready(function(){
   // Do something
});
$('.newresult').removeClass('newresult');

相关内容

  • 没有找到相关文章

最新更新