2016-08-04 83 views
0

我試圖在Wordpress 4.5.3中實現jQuery UI對話框,但它只能工作大約一半的時間。的時候,我碰到下面的錯誤,其餘:jQuery UI對話框 - 在Wordpress中未捕獲類型錯誤

Uncaught TypeError: jQuery(...).dialog is not a function lwr_jquery_dialog.js(2) 

我已經排隊的腳本如下,並驗證他們以正確的順序加載頁面上:

function enqueue_jquery_dialog() { 

    wp_enqueue_script('jquery-ui-dialog', false, array('jquery','jquery-ui-core'), 
     false, true); 
    wp_enqueue_script('lwr_dialog', get_stylesheet_directory_uri() . 
     '/js/lwr_jquery_dialog.js', array('jquery-ui-dialog'));   
} 
add_action('wp_enqueue_scripts', 'enqueue_jquery_dialog'); 

在lwr_jquery_dialog.js我有:

jQuery(document).ready(function() { 
    jQuery('#dialog').dialog({ 
     width: 600, 
     modal: true, 
     resizable: false, 
     draggable: false, 
    }); 
}); 

下面是在functions.php的實際對話功能

function add_jquery_dialog() { 
    ?> 
    <div id="dialog" title="Today Only"> 
      DIALOG TEXT HERE 
    </div> 
<?php 
} 
add_action('wp_footer', 'add_jquery_dialog'); 
+0

一半的時間聽起來像一個劇本是不是在正確的順序,並且恰好要麼被緩存剛剛在時間,你沒有第二次或負載第一次注意到這是一個問題。檢查腳本的順序,並確保jquery-UI在主jQuery庫之後加載。如果不是這樣,當你再次查看代碼時,請保持開放的態度 - 如果碰巧是這樣的話,讓我知道,我會回答它! – Jonathan

+0

您是否嘗試更改add_action的優先級? – j08691

+0

嘗試將jQuery更改爲$ –

回答

2

更新1:您錯過了jquery-ui-dialog腳本。由於您使用的false作爲源文件的價值,依賴關係不正確排隊

add_action('wp_enqueue_scripts', function() 
{ 
    $theme_uri = get_stylesheet_directory_uri(); 

    wp_enqueue_script('lwr-jquery-dialog', $theme_uri . '/js/lwr_jquery_dialog.js', 
['jquery-ui-core', 'jquery-ui-dialog'], false, true); 
}, 10, 0); 

:試試這個。有關更多信息,請參見wp_enqueue_script()函數的參數$src

試試這個:

add_action('wp_enqueue_scripts', function() 
{ 
    $theme_uri = get_stylesheet_directory_uri(); 

    wp_enqueue_script('lwr-jquery-dialog', $theme_uri . '/js/lwr_jquery_dialog.js', 
['jquery-core', 'jquery-ui-core'], false, true); 
}, 10, 0); 
+0

即使失敗,我也已經在html源文件中驗證了文件按正確的順序加載。我嘗試過,但沒有多餘的運氣。 – dpruth

+0

@dpruth我已經做了測試並更新了答案。希望這一次有效。 – MinhTri

+0

上面的腳本包含jquery-ui-dialog。但我確實更新了wp_enqueue_script函數(取出「FALSE」),它現在似乎正在工作。謝謝! – dpruth