我有这个页面有标签。例如,选项卡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中保存内容时,它也给我一个错误。我怎样才能解决这个问题。请给我一个解决方案。非常感谢!
});
答案 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)
,但参数的顺序不同。