jQuery UI对话框-Wordpress中未捕获的TypeError
我试图在Wordpress 4.5.3中实现一个jQueryUI对话框,但它只工作了大约一半的时间。其余时间,我会出现以下错误:jQuery UI对话框-Wordpress中未捕获的TypeError,jquery,wordpress,Jquery,Wordpress,我试图在Wordpress 4.5.3中实现一个jQueryUI对话框,但它只工作了大约一半的时间。其余时间,我会出现以下错误: Uncaught TypeError: jQuery(...).dialog is not a function lwr_jquery_dialog.js(2) 我已按如下方式将脚本排队,并验证它们在页面上的加载顺序是否正确: function enqueue_jquery_dialog() { wp_enqueue_script('jquery-ui-
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');
函数添加jquery\u对话框(){
?>
对话框文本在这里
更新1:您缺少jquery ui对话框
脚本。请尝试以下操作:
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);
由于您正在使用false
作为源文件的值,因此依赖项未正确排队。有关详细信息,请参阅函数中的$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);
更新1:您缺少jquery ui对话框
脚本。请尝试以下操作:
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);
由于您正在使用false
作为源文件的值,因此依赖项未正确排队。有关详细信息,请参阅函数中的$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);
有一半的时间听起来像是脚本的顺序不正确,第二次缓存或第一次加载时刚好没有注意到这是一个问题。检查脚本的顺序,确保jquery UI在主jquery库之后加载。如果不是这样,请在查看如果代码是这样的,请告诉我,我会回答的!您是否尝试过更改add_操作的优先级?尝试将jQuery更改为$一半的时间听起来好像脚本的顺序不正确,只是碰巧第二次被缓存或及时加载而您没有注意到它第一次出现问题。检查脚本的顺序,确保jquery UI在主jquery库之后加载。如果不是这样,请在再次查看代码时保持开放的态度-如果是这样的情况,请让我知道,我会给出答案!您尝试过更改add_操作的优先级吗?请尝试更改jQuery改为$即使失败,我也在html源代码中验证了文件的加载顺序是否正确。我尝试了此操作,但没有额外的运气。@dpruth我已经进行了测试并更新了答案。希望这次可以使用。我上面的脚本包括jQuery ui对话框。但我确实根据您的建议更新了wp_enqueue_脚本函数(去掉“假”)现在它似乎可以工作了。谢谢!即使失败了,我也在html源代码中验证了文件的加载顺序是否正确。我尝试了这个,但没有额外的运气。@dpruth我已经做了测试并更新了答案。希望这次能行得通。我上面的脚本包括jquery ui对话框。但我确实更新了wp_enqueue_脚本函数有了你的建议(去掉“FALSE”),它现在似乎起作用了。谢谢!