如何使用jQuery .load以便在所有脚本运行完毕后拉入一个元素?

时间:2014-04-10 20:56:44

标签: jquery wordpress jquery-datatables

我目前正在使用 datatables.js 在WordPress网站上提供目录:example.com/directory

我添加了使用查询字符串过滤目录的功能,因此我可以创建在加载时显示目录子集的链接:example.com/directory/?search=query

以下是我在目录页面上使用的代码:

<script charset="utf-8" type="text/javascript">// <![CDATA[
jQuery(document).ready(function() {
    jQuery.urlParam = function(name){
        var results = new RegExp('[\\?&#038;]' + name + '=([^&#]*)').exec(window.location.href);
        if (!results)
        {
            return '';
        }
        return unescape(results[1]) || '';
    }

    jQuery('#directory').dataTable( {
         "sPaginationType": "full_numbers",
         "aLengthMenu": [[15, 30, -1], [15, 30, "All"]],
         "iDisplayLength" : 15,
         "oSearch": {"sSearch": jQuery.urlParam('search')}
         }).rowGrouping()

    jQuery('div.dataTables_filter input').focus();
});
// ]]></script>

对于包含目录子集的页面:example.com/departmentpage

<script charset="utf-8" type="text/javascript">// <![CDATA[
jQuery(document).ready(function() {
    jQuery("#result").load("http://example.com/directory/?search=departmentname #directory > *");
});
// ]]></script>
<div id="result"></div>

.load函数有效,但它会拉入整个原始表,而不是通常在主目录页面上查找的表。我的假设是.load函数在脚本运行之前拉#directory

有没有办法让.load等到包含页面上的脚本在将内容拉入包含页面之前运行?

1 个答案:

答案 0 :(得分:0)

您正在使用#directory > *提取.load()。如果您提交的HTML所需的脚本未包含在.load()语句中,则不会发生任何事情。你只会在原始HTML中拉。

您需要包含脚本,或者通过其他方法提取HTML并重新运行将表格转换为所需效果所需的JavaScript。

在初次检查您使用的插件时,我建议您尝试使用sAjaxSource方法获取数据。