0

我在我的网站上使用了两个手风琴。一个是 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()函数。

4

3 回答 3

2

将此代码放在 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"});
...
于 2013-01-23T13:47:35.760 回答
1

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

于 2013-01-23T13:32:44.490 回答
0

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

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

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

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

于 2013-01-23T13:36:29.667 回答