gpt4 book ai didi

javascript - 如何从另一个可折叠元素 [js] 中的链接展开可折叠元素?

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:09 25 4
gpt4 key购买 nike

我正在制作一个可折叠元素的列表,这些元素可以调用自身来动态滚动和展开其他元素。为此拍摄...

在选择超链接之前。 enter image description here

选择后。 enter image description here

选择第三项段落中的链接时,如何获得第一个折叠的元素?

我得到了什么:如果上面的示例有更多折叠元素,那么下面的代码会将网页滚动到所需的可折叠元素(解决方案的一半)。

<!DOCTYPE html>
<html>
<head>
<!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
</head>
<body>
<div>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header"><i class="mdi-navigation-chevron-right"></i><a name="987"/>First</a></div>
<div class="collapsible-body"><p>Hello StackOverflow! SO's da' bomb diggidy!</p></div>
</li>
<li>
<div class="collapsible-header"><i class="mdi-navigation-chevron-right"></i>Second</div>
<div class="collapsible-body"><p>Why is the person who invests your money called a broker?</p></div>
</li>
<li>
<div class="collapsible-header"><i class="mdi-navigation-chevron-right"></i>Third</div>
<div class="collapsible-body"><p>I'd like to <a href="#987">open the First collapsible element</a> in this list.</p></div>
</li>
</ul>
</div>
<!--Import jQuery before materialize.js-->
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script>
</body>
</html>

最佳答案

我会先触发点击事件 .collapsible-header元素, anchor 的 html 代码略有变化:

$('[data-click]').on('click', function (e) {
$( $(this).data('click') ).trigger('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.95.3/js/materialize.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.95.3/css/materialize.min.css" rel="stylesheet"/>

<div>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header"><i class="mdi-navigation-chevron-right"></i>First</div>
<div class="collapsible-body">
<p>Hello StackOverflow! SO's da' bomb diggidy!</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="mdi-navigation-chevron-right"></i>Second</div>
<div class="collapsible-body">
<p>Why is the person who invests your money called a broker?</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="mdi-navigation-chevron-right"></i>Third</div>
<div class="collapsible-body">
<p>I'd like to <a href="#" data-click=".collapsible .collapsible-header:first">open the First collapsible element</a> in this list.</p>
</div>
</li>
</ul>
</div>

同样的代码也在 Fiddle.

如果你想定位第 n 个元素,你可以使用 jQuery :eq() selector (零基础)。例如,要定位第 3 个元素,您可以使用 '.collapsible-header:eq(2)'选择器。


如果您关心 SEO(您应该),那么您的链接应该有正确的 href .在这种情况下,将唯一 ID 添加到 .collapsible_header元素并使用略有不同的脚本来利用它:

$('[data-click]').on('click', function (e) {
$( $(this).attr('href') ).trigger('click');
});

目标元素在哪里:

<div id="about_stackoverflow" class="collapsible-header">

有效的本地链接是:

<a href="#about_stackoverflow" title="Click to open first item" data-click="true">open the First collapsible element</a>

你可以看到它在 this Fiddle 上工作 。 (最后一个 anchor 可能在同一页面的任何地方)

关于javascript - 如何从另一个可折叠元素 [js] 中的链接展开可折叠元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29226082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com