使用jQuery手风琴时在页面上查找字符串(Ctrl + F)

我正在使用jQuery手风琴插件来折叠大页面。 它运行良好,是一个压缩页面的好方法,但我注意到,当使用浏览器搜索function查找(Ctrl + F)时,它只查看搜索字符串的open div

有没有办法让浏览器找到搜索所有div (甚至可能打开它们)…我明白为什么这不是微不足道的。 搜索必须打开div来显示结果,这不是很明显……

如果没有明显的方法来解决这个问题,那么以编程方式执行此操作的方法是什么?

有任何想法吗?

手风琴没有简单的解决方案,围绕这样的概念设计,一次只能打开一个“翻盖”。 但是如果你摆脱了这种限制,你可以设计出有效的解决方案。

例如,

 $(document).on("keydown", function (e) { if (e.keyCode == 70 && e.ctrlKey) { ... } }); 

将允许您捕获Ctrl f并抢先展开所有隐藏文本。

另一种方法不是实际隐藏你的文本,而是使它几乎不可见(非常低的不透明度,或者在高度内:1 div,或者任何不阻止查找但仍然有效隐藏的东西),然后捕获select事件。 使用您喜欢的任何技术来找到您在DOM中的位置(例如http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html ),您可以然后react native地扩展刚刚选中文本的隐藏部分。

如果你确实有效,请回复你的结果!

这是一种简单但直接的手风琴替代方案,您可以使用ctrl-f事件技巧。

在您的HTML中,您可以像这样构造它:

 

Header 1

Content in this flap

Header 2

Content in this flap

Header 3

Content in this flap

设置h1元素的样式,确保你给它们像cursor: pointer和适当的background-color以表明这些是可点击的,例如:

 .booklet h1 { cursor:pointer; background-color:#3cf; color:white; border-top-left-radius:5px; border-top-right-radius:5px; padding:5px; } .booklet div { display:none; border: 1px solid #3cf; border-bottom-left-radius:5px; border-bottom-right-radius:5px; padding:5px; } 

在你的Javascript中:

 $('.booklet').on("click", "h1", function() { $('.booklet div').hide(); $(this).next("div").show(); // acts like accordion, animate to taste }); $('.booklet div').first().show(); // open first flap of accordion to begin $(document).on("keydown", function (e) { if (e.keyCode == 70 && e.ctrlKey) // ctrl+f { $('.booklet div').show(); // show all flaps } }); 

所有襟翼将保持打开,直到点击另一个标题,此时它将返回手风琴行为。

我选择了这个选项,如其他地方所述:

使用链接或按钮切换整个手风琴function

我为用户提供了一个选项,可以将手风琴全部切换到一起,然后他们可以使用Ctrl + F进行搜索。