【问题标题】:Targeting instances of JQuery UI Accordion without knowing what they are在不知道它们是什么的情况下定位 JQuery UI Accordion 的实例
【发布时间】:2017-11-17 15:51:54
【问题描述】:

我有一个在不同页面上使用 jquery UI 手风琴的网站。这些手风琴的脚本在每种情况下都在页面上。

我们正在研究所有页面的每日站点打印,因此我们需要在进行站点打印时完全展开这些手风琴(我们将通过检测站点打印机的 userAgent 字符串来做到这一点,因为他们可以发出自定义的)。

站点打印机可以停止在页面上执行 javascript 以保持内容完全展开,但我们也使用 AJAX 脚本来阻止内容加载。

所以我们需要一个脚本来定位页面上的任何 jquery 手风琴并使它们完全展开。我们在所有页面上都有一个 custom.js 文件,因此我们可以在其中放置命令。

我的问题是,是否可以在不知道它们是什么的情况下定位手风琴对象的所有实例?我正在研究将脚本放入 custom.js 文件中的可能性,而不是必须逐页重写所有 JQuery 手风琴调用(并试图让每个向网站添加内容的人也记住每次使用手风琴时都要编写基于 userAgent 的条件扩展)。

【问题讨论】:

  • 只要你能找到一个匹配每一页上所有手风琴的选择器,我看不出它不可能的理由。您应该显示一些代码,以便人们能够帮助您。
  • 所以我可以手动逐页向我的所有手风琴添加一个类,然后在脚本中定位该类?那行得通吗?因为他们有不同的 ID。
  • 是的。没错!
  • 您还可以测试每个$("div") 以查看它是否具有手风琴实例。最有可能的是,您将只使用$(".ui-accordion"),因为这个类是在 Accordion 初始化时添加到元素中的。

标签: javascript jquery jquery-ui multiple-instances


【解决方案1】:

在没有看到您的代码或对当前 HTML 有任何了解的情况下,您可以尝试以下操作:

$(".ui-widget.ui-accordion").each(function(index, elem){
  // Code that you want to execute on each Accordion
  // For example, we could disable each one:
  $(elem).accordion("disable");
});

我没有看到一次展开所有面板的方法。很可能,您必须 activate 每个面板。

找到这个:jQuery UI Accordion Expand/Collapse All

它建议使用主题使手风琴看起来正确,然后滚动您自己的能力来扩展所有内容。

【讨论】:

  • 谢谢。我认为那会做到的。是的,我知道我没有提供代码,但这就是请求的重点,编写一个可以工作的脚本,而不必知道我在每个页面上运行了什么特定的脚本。谢谢你。
猜你喜欢
  • 2017-11-14
  • 2013-02-05
  • 2018-09-15
  • 2010-09-28
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多