如何在动态加载的内容上附加许多jquery事件

时间:2011-07-03 15:06:48

标签: javascript jquery ajax

我在左侧有导航标签,我在右侧加载内容。 我使用live来附加click事件但是如何附加这些类型的函数

$('#form').submit(function() { 
        $(this).ajaxSubmit(options); 
          return false; 
    }); 

$("#dialog-confirm").dialog({
                             resizable: true,
                             autoOpen: false,
                             height:427,
                             width:650,
                             modal: true,
                             buttons: { "Ok": function() { $(this).dialog("close"); },
                                        "Cancel": function() { $(this).dialog("close"); } },
                              });

我也需要附加ajaxoptions

1 个答案:

答案 0 :(得分:1)

加载新内容时,必须从自己的代码中重新应用“.dialog()”之类的内容。通常,您可以在用于加载内容的ajax机制的“success”处理程序中执行此操作。

这意味着组织页面“小部件”设置代码是一个非常好的主意,以便可以调用它来操作页面的任意部分。在页面初始化时,您将针对<body>运行它,但在动态内容加载后,您将针对已更新的容器元素运行它。

编辑 - 更多详细信息:具体如何执行此操作取决于您,具体取决于您在应用程序中执行的操作类型。我写了一个jQuery plugin来处理这个问题,但是出于很多目的,这可能有点过头了。

一般的想法是你有一个初始化函数:

function initializeFeatures(startingPoint) {

在函数内部,您可以执行初始化对话框之类的操作,并且可以使用“startingPoint”参数完成工作的代码。换句话说,当代码必须“找到”要设置的页面元素时,它应始终从那里开始:

    $(startingPoint).find('.dialog-container').dialog({
      resizable: true,
      autoOpen: false,
      // ...
    });

然后,在您加载内容后的“成功”处理程序中,您可以再次调用您的函数:

    $('#dynamic').load('/your/url', function() {
      initializeFeatures(this);
    });

同样,它完全取决于您的申请的确切细节。