【问题标题】:Drop down menu suddenly stopped working下拉菜单突然停止工作
【发布时间】:2014-03-10 16:03:24
【问题描述】:

我正在使用基于引导程序构建的 Wordpress(主题:未来)。主题是响应式的,在移动视图上菜单转换为下拉菜单。即使在桌面版本中,我在其中一个菜单选项上也有一个下拉菜单,但突然这两个下拉菜单都停止工作了。

除了 css 文件之外,我没有对源代码进行任何更改。在控制台中有两个 javascript 错误,但我不确定它们是否与此问题有关:

Uncaught TypeError: Object #<Object> has no method 'on'         bootstrap.min.js?ver=3.0.3:9
Uncaught TypeError: Object #<Object> has no method 'tooltip'    custom.js?ver=1.0:62

当我悬停下拉菜单时,它会链接到“#”,但我想这是正确的?否则我不知道从哪里开始解决这个问题,如果你告诉我是哪一个,当然会包含代码。

编辑:这里是网站,http://www.henrikpetersson.se/lararummet/

【问题讨论】:

  • 可以看看相关代码吗?
  • 如果您不知道要发布什么代码,您可以发布该网站的链接吗?
  • 需要登录才能看到henrikpetersson.se/lararummet,但我的猜测是 jquery 没有加载。在浏览器的 js 控制台中输入 window.jQuery。它应该返回function()object{}。如果返回,undefined 开始查找 jquery 未加载的原因。
  • 登录页面在控制台(chrome)中没有显示任何错误

标签: javascript wordpress twitter-bootstrap drop-down-menu


【解决方案1】:

您的网站使用jQuery 1.4,但on() method 直到jQuery 1.7 才添加。 Bootstrap 正在尝试使用它并导致错误。

您正在使用的轮播插件可能正在加载这个旧版本的 jQuery 并阻止 WordPress 加载新版本。请参阅上面的 jquery 1.4 链接的源代码(来自插件的目录)。尝试禁用该插件并查看您的菜单是否有效。 WordPress 附带了更现代的 jQuery 版本。

编辑
是的。该插件最后一次更新是在 2012 年,它以最糟糕的方式加载 jQuery。

function sponsors_carousel_enqueue_scripts() {
    if ( function_exists('plugin_url') )
        $plugin_url = plugin_url();
    else
        $plugin_url = get_option('siteurl') . '/wp-content/plugins/' . plugin_basename(dirname(__FILE__));

    // jquery
    wp_deregister_script('jquery');
    wp_register_script('jquery', ($plugin_url  . '/jquery-1.4.2.min.js'), false, '1.4.2');
    wp_enqueue_script('jquery');

来源:http://plugins.svn.wordpress.org/sponsors-carousel/trunk/sponsors-carousel.php

插件本质上是在说

  1. 注销要加载的任何版本的 jQuery WP
  2. 用我的旧版本创建一个名为 jQuery 的新脚本(因为我总是对的)
  3. 加载我很棒的版本。

糟透了。

选项

  1. 寻找另一个轮播插件
  2. 编辑此插件并删除所有这三行(应该没问题)
  3. (如果 2. 不起作用...)编辑此插件并将其指向更现代的 jQuery 版本

【讨论】:

  • 非常感谢您的详细解答!轮播插件导致了这个问题,停用它问题就解决了。
猜你喜欢
  • 2019-07-28
  • 2016-05-15
  • 1970-01-01
  • 2018-11-27
  • 2017-08-22
  • 2021-02-01
  • 2016-12-29
  • 2018-05-09
  • 2015-12-07
相关资源
最近更新 更多