我有一个函数来解析一些数据,并得到一个与前一个相同的结果,只有一些类被抛出。
$(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上的功能。
答案 0 :(得分:3)
调用$(...).click(function)
将处理jQuery对象当前包含的特定元素的click事件。
当您调用.load
时,该元素将被一个新元素替换,该元素没有任何事件处理程序。
你需要调用.live
,它将处理与选择器匹配的所有元素的事件,无论它们何时被创建。
例如:
$("div.rating div").live("click", function() { ... });
答案 1 :(得分:2)
这是因为您重新加载的内容没有附加事件处理程序。使用live()
方法附加它们,它将在重新加载数据后工作,或在加载数据后手动连接它们(第一种方法更简单)。