回调后jquery无法正常工作

时间:2010-03-01 15:21:18

标签: jquery post load

我有一个函数来解析一些数据,并得到一个与前一个相同的结果,只有一些类被抛出。

$(document).ready(function() {
  $("div.rating div").click(function(){
     var str = $(this).attr('alt');
     var b = str.split("-");
     var book = b[0];

     $("div.book-" + book).load("sites/all/modules/rm_raamaturiiul_rating/rating.php", { query: str });
  });
});

但在加载结果后,jquery不会检查它。 例如,我单击一个div,它发送一个请求,然后返回并重写具有相同ID和类名称的div,但在此之后,jquery忽略对它的任何点击。我甚至在.load之前放了alert(),但jquery只是在它第一次完成它之后才跳过它。 我试过发帖,但是jq甚至根本没有启动div上的功能。

2 个答案:

答案 0 :(得分:3)

调用$(...).click(function)将处理jQuery对象当前包含的特定元素的click事件
当您调用.load时,该元素将被一个新元素替换,该元素没有任何事件处理程序。

你需要调用.live,它将处理与选择器匹配的所有元素的事件,无论它们何时被创建。

例如:

$("div.rating div").live("click", function() { ... });

答案 1 :(得分:2)

这是因为您重新加载的内容没有附加事件处理程序。使用live()方法附加它们,它将在重新加载数据后工作,或在加载数据后手动连接它们(第一种方法更简单)。