【问题标题】:vertical accordion function naming issue in jqueryjquery中的垂直手风琴功能命名问题
【发布时间】:2013-01-23 22:00:41
【问题描述】:

我在我的网站上使用了两个手风琴。一个是 JqueryUI,另一个在这里:

http://www.adipalaz.com/experiments/jquery/nested_accordion.html

现在的问题是他们都使用 .accordion 来初始化手风琴。在这种情况下,只有一个可以工作。

有什么办法可以解决这个函数命名问题吗?

要初始化 Jquery-UI,我正在使用这个:

$( ".jquery-ui-accordion" ).accordion();    

要初始化另一个(嵌套手风琴),我正在使用这个:

$("html").addClass("js");
$.fn.accordion.defaults.container = false; 
$(function() {
  $("#acc3").accordion({initShow : "#current"});
  $("#acc1").accordion({
      el: ".h", 
      head: "h4, h5", 
      next: "div", 
      initShow : "div.outer:eq(1)"
  });
  $("#acc2").accordion({
      obj: "div", 
      wrapper: "div", 
      el: ".h", 
      head: "h4, h5", 
      next: "div", 
      showMethod: "slideFadeDown",
      hideMethod: "slideFadeUp",
      initShow : "div.shown",
      elToWrap: "sup, img"
    });
  $("html").removeClass("js");
});

}); 

请注意他们都使用.accordion()函数。

【问题讨论】:

  • 请发布示例代码。
  • both of them are using .accordion to initialize the accordion是什么意思
  • @Nix 我已经更新了我的问题。

标签: jquery jquery-ui accordion jquery-ui-accordion


【解决方案1】:

将此代码放在 jQuery UIs javascript include 之后和其他手风琴 javascript include 之前:

jQuery.fn.myCustomAccordion = jQuery.fn.accordion;
delete $.fn.accordion;

然后你可以同时使用两个手风琴,例如:

// jQuery accordion
$( ".jquery-ui-accordion" ).myCustomAccordion(); 

// "Other accordion"
$("#acc3").accordion({initShow : "#current"});
...

【讨论】:

  • 我应该创建一个js文件并放置jQuery.fn.myCustomAccordion = jQuery.fn.accordion;删除 $.fn.accordion;在里面然后在中间加载?
  • 你可以这样做,是的。或者您将该代码放在script-Tag 中。
  • 看看这个类似的问题:stackoverflow.com/questions/11898992/…
【解决方案2】:

如果它们都被命名为.accordion,那么您是在声明 CSS 类名称被用作选择器,对吗?所以我建议在每个类名旁边使用一个唯一的id 来区分这两个.accordion。但是如果没有代码示例,就很难提供进一步的帮助。

【讨论】:

    【解决方案3】:

    如果您指的是函数名称,您可以简单地卷起袖子,在其中一个源代码文件中重命名函数。

    或者你可以使用两个做同样事情的插件......

    更新:我对你现在想要做什么有了更好的了解。我已经将 jquery.collapsible-menus.js 用于完全相同的事情。它使用列表而不是 div,但它很容易上手。

    http://tommcfarlin.com/collapsible-menus-for-jquery-1-1/

    【讨论】:

    • 请不要让我看他们的图书馆:)
    • 我刚刚进行了编辑,以向您指出我认为对您的问题更好的解决方案。
    • 非常感谢您的建议,通过 Simon 的回答解决了问题。实际上,我已经对该手风琴进行了很多设计更改以适应我的设计,现在我不想搬到新的手风琴。
    • 应不惜一切代价避免重命名源代码中的函数。也就是说,看起来这个$().accordion 函数在同一页面上实例化两个实例时遇到问题?如果原始发帖人对函数进行了编码,他们应该研究如何允许多个实例化发生。如果这是一段代码,我的建议是找到更好的代码;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多