0

我正在将 Drupal 6 主题更新为 Drupal 7。在 Drupal 6 版本中,我有一个不错的小菜单功能,将 JQuery 注入主菜单以使其作为下拉菜单工作(+ 获取菜单树的预处理功能)这很好用。

在我的主题的 Drupal 7 版本中,我在我的信息文件中调用 JavaScript,就像在 Drupal 6 中所做的那样,并查看渲染页面的源代码,它没有注入菜单本身。我调用下面的脚本以及标准的 superfish.js(它在 Drupal 6 中再次运行良好。)

   Drupal.behaviors.skyBehavior = function(context) {
  /**
   * Superfish Menus
   * http://users.tpg.com.au/j_birch/plugins/superfish/
   * @see js/superfish.js
   */
  jQuery('#navigation ul').superfish({
    animation: { opacity: 'show', height:'show' },
    easing: 'swing',
    speed: 250,
    autoArrows:  false,
    dropShadows: false /* Needed for IE */
  });
};

我相信完成所有繁重工作的那一行是:( jQuery('#navigation ul').superfish({ 请注意,我周围的菜单 div id 是“#navigation”,然后<ul>标签开始。)

我在我的 Drupal 7 版本中运行一个预处理函数来获取主菜单的菜单树,我可以看到在 Firebug 中查看的整个树,但我可以看到 Jquery 注入的代码丢失了。

在我的 Drupal 6 主题中,我会看到:

<ul class="menu sf-js-enabled" style="visibility: hidden; display: none;">... - 当然,鼠标悬停会将“显示:无”更改为“可见”。

但是在我的主题的 Drupal 7 版本中,我在 Firebug 中看到的只是: <ul class="menu">...

我对 JavaScript 不太了解,所以我希望这可能会给某人敲响关于如何找到修复的钟声。谢谢。

4

4 回答 4

1

您可以查看在 Drupal 7 中管理 js以帮助您入门。建议是创建一个闭包,尽管我不知道这会如何影响您的代码。

如果它没有帮助,您可以通过alert('message')在代码中执行或类似的操作来测试行为/js 文件是否正在运行。

于 2011-01-08T16:12:41.397 回答
0

这是基于@googletorp 发送给我的页面链接的代码:

(function ($) {

  Drupal.behaviors.MyTheme = {
    attach: function(context, settings) {
      $('#navigation ul', context).superfish(function () {

      });
    }
  };

})(jQuery);

下拉菜单现在可以在 Drupal 7 中使用,但我仍然需要弄清楚如何添加用于缓动、速度和动画的代码......

于 2011-01-08T16:58:11.087 回答
0

刚刚意识到我从未发布过工作代码。这是有效的 Drupal 7 代码:

(function ($) {

Drupal.behaviors.MyTheme = {

attach: function(context, settings) {
$('#navigation ul', context).superfish({

animation: { opacity: 'show', height:'show' },
speed: 250,
autoArrows: false,
dropShadows: false /* Needed for IE */

});
}};

})(jQuery);
于 2011-10-19T15:48:18.720 回答
-1

天啊,

用 2 天时间解决了 jquery 循环插件的类似问题。解决方案在这里:

http://drupal.org/node/1043478#comment-4168166

接缝是php代码的问题。您必须像 <\'> 一样保护 <'>

于 2011-03-04T21:46:15.110 回答