通过jQueryAjax拉入的内容与以前的函数没有关联

通过jQueryAjax拉入的内容与以前的函数没有关联,jquery,ajax,Jquery,Ajax,我正在使用jQuery.load()函数拉入数据以填充div。我正在拉入的内容有CSS选择器,它们应该与我编写的jQuery单击函数相匹配。然而,当我加载数据时,尽管有正确的CSS选择器,但当我单击应该调用jQuery响应的区域时,什么也没有发生 我需要重新加载吗 以下是我为jQuery AJAX编写的代码: $(document).ready(function() { // AJAX functionality for drupal nodes $(".ajax_node").click(fu

我正在使用jQuery
.load()
函数拉入数据以填充div。我正在拉入的内容有CSS选择器,它们应该与我编写的jQuery单击函数相匹配。然而,当我加载数据时,尽管有正确的CSS选择器,但当我单击应该调用jQuery响应的区域时,什么也没有发生

我需要重新加载吗

以下是我为jQuery AJAX编写的代码:

$(document).ready(function() {
// AJAX functionality for drupal nodes
$(".ajax_node").click(function() {
    var ajax_src = $(this).attr("href"); // we're gonna load the href

    // empty target div and load in content
    // the space in the string before the #id is necessary
    $("#ajax_area").empty().load(ajax_src + " #ajax_wrapper");
    return false; // stops the link from following through
});

// General AJAX functionality
$(".ajax").click(function() {
    var ajax_src = $(this).attr("href");
    $("#ajax_area").empty().load(ajax_src);
    return false;
});
});

它不起作用,因为当您通过
load
将元素拉入时,实际上是在重新创建元素,并且需要重新绑定事件处理程序。我建议使用

它不起作用,因为当您通过
加载
将元素拉入时,实际上是在重新创建元素,需要重新绑定事件处理程序。我建议使用

而不是此格式:

$(".ajax_node").click(function() {
用于当前和将来的元素,如下所示:

$(".ajax_node").live('click', function() {
function callback(data) { //your success callback, e.g. .load(url, callback)
  $(".ajax_node", data).click(myFunction);
}
原因:
.live()
侦听事件在DOM根目录或
文档中冒泡。它是绑定在那里的单个事件处理程序…添加元素时不重要,当单击到达那里时,它们都会弹出
单击
相同的气泡:它检查选择器,如果匹配,则运行处理程序

当前方法不起作用的原因:它正在查找当时与该选择器匹配的所有元素,并绑定处理程序……新元素不在那里,因此不要获取该处理程序。您有两个选项可以解决此问题,或者使用以不同方式工作的
.live()
,如上所述,或者将处理程序重新绑定到请求内容中的选择器,如下所示:

$(".ajax_node").live('click', function() {
function callback(data) { //your success callback, e.g. .load(url, callback)
  $(".ajax_node", data).click(myFunction);
}

在您的情况下,我认为
.live()
要容易得多,第二种方式通常是使用小部件等,而不是严格意义上的事件处理程序……而是任何能让您的船漂浮的东西。

而不是这种格式:

$(".ajax_node").click(function() {
用于当前和将来的元素,如下所示:

$(".ajax_node").live('click', function() {
function callback(data) { //your success callback, e.g. .load(url, callback)
  $(".ajax_node", data).click(myFunction);
}
原因:
.live()
侦听事件在DOM根目录或
文档中冒泡。它是绑定在那里的单个事件处理程序…添加元素时不重要,当单击到达那里时,它们都会弹出
单击
相同的气泡:它检查选择器,如果匹配,则运行处理程序

当前方法不起作用的原因:它正在查找当时与该选择器匹配的所有元素,并绑定处理程序……新元素不在那里,因此不要获取该处理程序。您有两个选项可以解决此问题,或者使用以不同方式工作的
.live()
,如上所述,或者将处理程序重新绑定到请求内容中的选择器,如下所示:

$(".ajax_node").live('click', function() {
function callback(data) { //your success callback, e.g. .load(url, callback)
  $(".ajax_node", data).click(myFunction);
}
在您的情况下,我认为
.live()
要容易得多,您通常使用小部件等来执行第二个操作,而不是严格意义上的事件处理程序……但是任何可以让您的船漂浮的东西