jquery中的垂直折叠函数命名问题

时间:2013-01-23 13:28:13

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

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

3 个答案:

答案 0 :(得分:2)

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

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

然后你可以使用两种手风琴,例如:

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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

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