动态加载div中的Javascripts无效(JSON)

时间:2015-06-09 22:43:35

标签: javascript php jquery html json

这可能是重复的 - 但在所有其他解决方案中,我似乎无法找到符合我目的的任何有用信息。

我有这个脚本将数据解析为.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()中 - 但是我无法对其进行排序。

1 个答案:

答案 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>