2014-04-10 31 views
1

我目前使用datatables.js在WordPress網站上提供一個目錄:example.com/directory如何使用jQuery .load,以便在所有腳本完成運行後,它都會引入一個元素?

我使用查詢字符串,所以我可以創建鏈接添加到過濾目錄的能力,當加載顯示目錄的一個子集: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等到包含的網頁上的腳本運行它拉內容,存入包入頁面之前?

+0

我最初的想法是確保最後想要運行的腳本位於腳本字符串的末尾。否則,將'.load()'放入一個函數並在最後一個腳本的末尾運行它?我知道有更好的方法可以讓它等待,我確定有人會發布它 – ntgCleaner

回答

0

您正在使用​​拉#directory > *。如果您需要呈現所插入HTML的腳本未包含在您的​​聲明中,則不會發生任何情況。你只會在被拉動原始的HTML。

您需要可以包括腳本,或通過不同的方法在HTML拉,然後重新運行錶轉換成其所需的影響所需要的JavaScript。

在插件的初步檢查您使用的,我會建議您嘗試使用sAjaxSource方法來抓住你的數據。

+0

最終,也許從現在開始的9-12個月,該目錄可能會從Active Directory中取代當前手動維護的表。我曾考慮將當前數據從當前表中移入一個json數據源,如下所示:[link] http://datatables.net/release-datatables/examples/ajax/custom_data_property.html,然後使用該數據源對於任何需要的實例,但我想盡可能使用已經存在的內容。 – Mike

+0

是的,看起來你可能在目前的形式中處於虧損狀態,因爲它實際上需要將數據插入到插件中正確顯示。您可以輕鬆設置一個.php端點並使用'WP_Query'或類似的方法來吐出一個JSON字符串,您可以使用該插件來使用這些數據並將其輸入到表格中。 – tr3online

+0

謝謝@ tr3online。我將把現有的表格數據轉換成json數據源並使用它,而不是我迄今爲止所做的。聽到你的意見是非常有幫助的。 – Mike

相關問題