我在JS中有一个名为AssignAJAXEvents()的函数,其设置如下:
function AssignAJAXEvents(containerSelector)
{
containerSelector = containerSelector || 'body';
$("input[type='submit']",containerSelector).filter('.ajax').unbind('click').bind('click',function(){
var container = $(this).closest('*.lc');
$.ajax({
beforeSend: function(){ $(loading).show(); },
timeout: 60000, // 60 seconds
error: function() { },
type: "POST",
dataType: "html",
data: post_data,
url: "/ajax.php?Ajax&Page=" + page + "&" + action_name + "=" + action_value,
success: function(data) {
$(loading).hide();
container.hide().replaceWith(data).show();
AssignAJAXEvents(container);
}
});
return false;
});
}
jQuery(document).ready(function() {
AssignAJAXEvents();
});
当页面最初加载时,函数将事件加载到“body”,这是整个元素..当ajax调用完成时,我想将此事件仅加载到受影响的容器中...否则会浪费资源已经分配的事件和整个“身体”匹配的元素将受到影响。
如何将此事件仅分配给新填充的容器?
答案 0 :(得分:0)
function AssignAJAXEvents(containerSelector)
{
containerSelector = containerSelector || 'body';
$("input[type='submit']",containerSelector).filter('.ajax').one('click',function(){
var container = $(this).closest('*.lc');
$.ajax({
beforeSend: function(){ $(loading).show(); },
timeout: 60000, // 60 seconds
error: function() { },
type: "POST",
dataType: "html",
data: post_data,
url: "/ajax.php?Ajax&Page=" + page + "&" + action_name + "=" + action_value,
success: function(data) {
$(loading).hide();
container.hide().replaceWith(data).show();
AssignAJAXEvents(container);
}
});
return false;
});
}