这可能是重复的 - 但在所有其他解决方案中,我似乎无法找到符合我目的的任何有用信息。
我有这个脚本将数据解析为.php文件,该文件从数据库查询中生成内容。
.php文件将生成的HTML内容作为JSON返回 - 这个生成的内容包括som JS(在加载的内容中单击某些DIV时要运行的一些contextMenu函数)。
这些功能在加载的内容中不起作用。
从我的主要网站开始运行:
$('.part_click').on('click', function(){
var data_id = $(this).attr('id');
$.ajax({
url: 'explode_machine.php',
type: 'POST',
data: {id: data_id, machineid: '<?php echo $machineid;?>'},
dataType: 'json',
success: function(data){
$('#explode').html(data.html);
}
});
});
.php返回(在很多方面):
$('#clickedDiv').contextMenu('#menu-Div',{triggerOn:'contextmenu'});
#clickedDiv
和#menu-Div
只是在这里使用的花哨名称,因为ID的实际名称和数量可能因数据库查询而异。
包含contextMenu函数的.js文件加载在我的主站点的顶部。
如果我右键单击动态加载内容中的#clickedDiv
没有任何反应 - 如果我将相同的功能添加到动态加载内容之外的内容,则一切都按预期工作。
据我从其他主题中理解,问题出在JSON解析或.html()中 - 但是我无法对其进行排序。
答案 0 :(得分:0)
假设您的AJAX成功处理程序添加了$('.part_click').on('click', function(){
var data_id = $(this).attr('id');
$.ajax({
url: 'explode_machine.php',
type: 'POST',
data: {
id: data_id,
machineid: '<?php echo $machineid;?>'
},
dataType: 'json',
success: function(data){
$('#explode').html(data.html);
// initialise the plugin here:
$('#clickedDiv').contextMenu('#menu-Div', {
triggerOn: 'contextmenu'
});
}
});
});
元素,您需要在元素放入DOM后初始化该插件。试试这个:
@exports <modulename>.<classname>