jQuery在ajax调用后绑定函数和触发器
function bindALLFunctions() { ..all triggers functions related go here }; $.ajax({ type: 'POST', url: myURL, data: { thisParamIdNo: thisIdNo }, success: function(data){ $(".incContainer").html(data); bindALLFunctions(); }, dataType: 'html' });
我是ajax和JQuery的新手。 我在js-jquery代码中有上面的ajax调用。 bindALLFunctions(); 用于在ajax调用之后重新调用所有触发器和函数。 它按预期工作得很好。 但是,我已经阅读了在初始操作完成后加载某些东西更好的地方,所以我尝试添加/编辑以下两个而没有任何成功。 有任何想法吗?
1) -> $(".incContainer").html(data, function(){ bindALLFunctions(); }); 2) -> $(".incContainer").html(data).bindALLFunctions();
也许你应该看一下live和delegate函数。 您可以在应用程序的开头设置一个唯一的事件处理程序,所有加载的ajax代码将自动绑定:
$("table").delegate("td", "hover", function(){ $(this).toggleClass("hover"); });
但如果您更喜欢使用Jquery.ajax调用,则必须执行以下操作:
$.ajax({ type: 'POST', url: myURL, data: { thisParamIdNo: thisIdNo }, success: function(data){ $(".incContainer").html(data); bindALLFunctions(".incContainer"); }, dataType: 'html' });
并将bindALLFunctions
转换为:
function bindALLFunctions(selector) { ..all triggers functions related go here. Example: $('#foo', selector).bind('click', function() { alert('User clicked on "foo."'); }); };
只会绑定给定选择器“下”的事件。
你的初始代码很好。 新版本不起作用,因为html()函数没有回调函数。
从你的问题中很难说出你想要问什么,但我的猜测是你想知道准备好的function。 它可以让你在文件可用后调用你的bindALLFunctions; 只需执行$(document).ready(bindALLFunctions)
或$(document).ready(function() { bindALLFunctions(); })
。