页面内容由load()加载后,页面不调用Jquery函数

时间:2012-04-19 11:34:37

标签: jquery function load

我有这个页面有标签。例如,选项卡1中的内容作为默认内容加载。当我点击标签1时,它会加载如下内容:

 $('.options').load('index.php?viewfile='+filee+' .optionsPane', function(data) {
      //inside here i initialized tinymce because the page has tinymce contents.
}

并在该标签1中有一个表格。我有一个js页面链接到包含所有功能的页面。我有这个代码。

  $(document).ready(function(){
      $('.bottommernuform').submit(function () {
        var idval = $(this).attr('id').toString();
        var idvalarr = idval.split("-");
        var region_name= idvalarr[idvalarr.length-1];
        var publish = $('#regionstate-'+region_name).val();
        var swap = $('#swapregion-'+region_name).val();
        var page_url = $('#page-'+region_name).val();
        $.post("index.php", { publish:publish , swap:swap, region_name:region_name}, 
                            function(data) {
                                //alert(data);

                        });

 return false;
});

当我完全加载页面后点击表单提交按钮时,这非常有效。但是如果我单击选项卡1来加载来自load()$('.bottommernuform').submit()的内容没有被调用..它会刷新整个页面。单击选项卡1后更多,当我试图在tinymce中保存内容时,它也给我一个错误。我怎样才能解决这个问题。请给我一个解决方案。非常感谢!       });

1 个答案:

答案 0 :(得分:2)

这里有两个可能的问题。首先,使用.load()加载内容不会触发$(document).ready(),因此$(document).ready()中的所有代码都不会在加载新代码后运行。

其次,当您使用静态事件处理时,如:

$('.bottommernuform').submit(fn)

此事件处理程序仅对首次安装事件处理程序时存在的'.bottommernuform'个对象有效。这意味着它将不会在将来加载的内容中运行。

如果您正在动态加载内容,并且您希望以前安装的事件处理程序使用该新内容,那么您需要使用委托事件处理,如下所示:

$(staticParentSelector).on('submit', '.bottommernuform', fn);

此jQuery对象中的选择器必须是动态加载的.bottommernuform对象的静态父对象(例如,在document.ready()代码运行时存在的东西,并且是所有{{1}的父对象对象)。为了获得最佳性能,它应该是尽可能最接近目标的父项,而不是动态加载。

另外,请记住,为了防止提交操作的默认行为,您应该从提交事件处理程序.bottommernuform

注意:{1}已添加到v1.7中的jQuery中。对于v1.7之前的版本,您可以使用类似的return(false),但参数的顺序不同。