我有两个php文件,其中一个是通过url执行的,该文件调用第二个php文件进行ajax调用。一些ajax结果返回HTML内容作为结果,其中有一些javascript事件。事件没有用,所以每当进行ajax调用以返回带有JS事件的HTML内容时,我都会包含js文件。我不认为这是正确的方法。即使 我在ajax返回的html内容上使用'live'事件
但是正确的方法
function show_regfunc_to_box(this_id){
var enc_item_id = this_id;
enc_item_id = enc_item_id.split("--")[1];
regfunc_to_item_id_hidden = '#regfunc_to_item_id_hidden--'+enc_item_id;
item_id = $(regfunc_to_item_id_hidden).val();
var current_action_regfunc_to_id = '#current_action_regfunc_to_id--'+enc_item_id;
if(($(current_action_regfunc_to_id).css('display'))=='none'){
$.getJSON('./ajax_funcs.php?func=regfunc_to_box',{item_id_regfunc_to:item_id,enc_item_id:enc_item_id},function(data){
$('.current_action_regfunc_to_and_chfunc').hide();
$(current_action_regfunc_to_id).center_box();
$.post('./ajax_funcs.php?func=regfunc_to_box',{enble_js_file:true});
$(current_action_regfunc_to_id).html(data.regfunc_box_html);
//$(current_action_regfunc_to_id).center_box();
$(current_action_regfunc_to_id).show();
});
}
//cls_i_item_options();
}
elseif($_REQUEST['func']=='regfunc_to_box'){
require_once('./js/jq_funcs.js');
ajax_fcs::regfunc_to_box($_REQUEST['item_id_regfunc_to'],$_REQUEST['enc_item_id']);
}
答案 0 :(得分:0)
包含JS和Ajax返回的HTML实际上并不是最好的方法。相反,在您的根文件(您的第一个文件)中包含javascript文件,并确保第二个文件仅返回HTML。
从这里开始,这只是Javascript的问题。从Ajax请求获得的HTML上的事件将无效,因为浏览器不知道DOM的那部分附加了任何事件。因此,为了使其工作,重新绑定Javascript回调函数中的所有事件(即,在Ajax请求完成时执行的函数)。
如果你正在使用jQuery的一个例子:
$.get('second_page.php', function(data){
// that is callback function, let's say
// you are getting a div with id="test"
// as returned HTML
$('body').append($(data));
$('#test').bind('some_event', function(e){
// and that is event callback
});
});