插入jQuery天气代码后,我的响应菜单丢失

时间:2013-12-07 作者:Elmer Harris

存在问题的站点-http://rheareview.com

我有一个基于wordpress(多站点)的社区新闻网站。任务是放置一个包含当前温度的天气提要,包括“天气状况良好”图标。

我想我找到了zweatherfeed的解决方案http://www.zazar.net/developers/jquery/zweatherfeed/. 我在插入jquery天气后发现。。。我的菜单在到达第一个响应断点(浏览器宽度768px)时不会显示。

我知道是weatherfeed给我带来了问题。当我从标题中删除提要时。php它工作正常。顺便说一句,我称之为“jquery”。min.js和jquery。zweatherfeed。我的标题中的min.js。php。提前感谢您的帮助。

Here's a screenshot pointing out my issue.

谢默斯。。。

我在函数的底部添加了以下内容。php:

function newsplus_add_scripts() {
// Register the zweatherfeed script
wp_register_script(
    \'zweatherfeed\', // The name for the script 
    get_template_directory_uri() . \'/js/zweather/jquery.zweatherfeed.min.js\', // Here
    array( \'jquery\' ),
    \'1.0.1\', 
    false
  );

wp_enqueue_script( \'zweatherfeed\');
}

// Call our function for the \'wp_enqueue_scripts\' hook
add_action( \'wp_enqueue_scripts\', \'newsplus_add_scripts\' );

function newsplus_add_script_config() {
if ( wp_script_is(\'zweatherfeed\') ) { // check that the zweatherfeed script is printed
    echo "<script> jQuery(\'#test\').weatherfeed([\'USTN0132\']);</script>";
  }
}
add_action( \'wp_head\', \'newsplus_add_script_config\', 20 );
它现在正在调用zweather脚本,但没有显示。我实际上使用的是newsplus主题的子主题名为“newsplus child”。我应该使用这些函数吗。子主题目录中的php?它当前为空。

1 个回复
SO网友:Seamus Leahy

菜单中断的原因是响应菜单是通过jQuery插件处理的。当您通过包含第二个版本的jQuery来包含zweatherfeed Javascript时,您正在删除jQuery对象和所有jQuery插件(包括响应菜单)。第二个版本覆盖第一个版本。

WordPress有一个处理包含各种Javascript文件的功能,这意味着您不需要在header.php. WordPress允许您注册Javascript文件(wp_register_script()) 使用版本号等各种设置,包括在页眉或页脚中,and which Javascript files to include before it as they are dependent upon it.. 其他功能(wp_enqueue_script()) 是告诉WordPress打印script 元素以包含Javascript文件。

在您的主题中functions.php 文件中,您将添加一个函数来添加zweatherfeed Javascript。然后,您将告诉WordPress在wp_enqueue_scripts 钩这样可以确保在正确的时间调用它。

function theme_name_add_scripts() {
    // Register the zweatherfeed script
    wp_register_script(
        \'zweatherfeed\', // The name for the script 
        \'http://rheareview.com/weather/jquery.zweatherfeed.min.js\', // The URL for the script
        array( \'jquery\' ), // The scripts this script needs loaded before it
        \'1.0.1\', // Version number
        false // False will include it in the head, true will include it at the end
  );
    // Tell WordPress to include the zweatherfeed
    wp_enqueue_script( \'zweatherfeed\');
}

// Call our function for the \'wp_enqueue_scripts\' hook
add_action( \'wp_enqueue_scripts\', \'theme_name_add_scripts\' );
您会注意到的另一件事是,您不必注册jQuery,因为默认情况下,jQuery包含在WordPress中。但我们仍然必须告诉WordPress在zweatherfeed脚本之前包含jQuery。

您的zweatherfeed还具有script 具有某些配置的元素。WordPress没有特定的方式来处理您的案件(there is a feature for a configuration object), 但我们还是可以让它工作的。中的Javascript文件headwp_head(). 您将使用wp_head 钩子打印出您的配置Javascript代码。

function theme_name_add_script_config() {
    if ( wp_script_is(\'zweatherfeed\') ) { // check that the zweatherfeed script is printed
        echo "<script> jQuery(\'#test\').weatherfeed([\'USTN0132\']);</script>";
    }
}
add_action( \'wp_head\', \'theme_name_add_script_config\', 20 );
现在已经完成了,通常我会将其放在主题的Javascript文件中。我将有一个Javascript文件,用于连接各种插件和服务。

另外,如果将Javascript文件放在主题中,则需要使用get_template_directory_uri() 获取主题文件夹的URL。

function theme_name_add_scripts() {
    // Register the zweatherfeed script
    wp_register_script(
        \'zweatherfeed\', // The name for the script 
        get_template_directory_uri() . \'/js/jquery.zweatherfeed.min.js\', // Here
        array( \'jquery\' ),
        \'1.0.1\', 
        false
  );

    wp_enqueue_script( \'zweatherfeed\');
}

结束

相关推荐

使用jQuery验证自定义元框会导致将帖子保存为草稿,而不是已发布的帖子

我有一个自定义的帖子类型和一堆自定义字段。我想在您按下发布按钮后立即用jQuery验证元框输入。以下是我所拥有的(我遗漏了所有验证材料):$(\"input#publish\").click(function(e){ e.preventDefault(); $(\"#ajax-loading\").show(); $(\'form#post\').submit(); }); 正如您所看到的,我只是在此时中断了表单提交,没有其他事情发生。但是