html - 如何打开在 URL 中使用 id 时
问题描述
我正在使用 Bootstrap 的手风琴制作一个常见问题解答网站。
<!-- Card 1 -->
<div class="card">
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left"
id="how"
type="button"
data-toggle="collapse"
data-target="#collapseOne"
aria-expanded="false"
aria-controls="collapseOne">
How?
<i class="fa fa-angle-down float-right"></i>
</button>
</h2>
</div>
<div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#faq">
<div class="card-body mr-3 ml-3">
Lorem Ipsum
</div>
</div>
</div>
<!-- Card 2 -->
<div class="card">
<div class="card-header" id="headingTwo">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed"
id="why"
type="button"
data-toggle="collapse"
data-target="#collapseTwo"
aria-expanded="false"
aria-controls="collapseTwo">
Why?
<i class="fa fa-angle-down float-right"></i>
</button>
</h2>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#faq">
<div class="card-body mr-3 ml-3">
Lorem Ipsum
</div>
</div>
</div>
默认情况下,div 是关闭的。我希望能够使用以下 URL:mywebsite.com/faq#how
并且当我执行此 URL 时,我希望 div 自动打开。如何做到这一点?提前致谢。
解决方案
你可以这样做:
var url = "mywebsite.com/faq#how";
var hash = url.substring(url.indexOf('#')+1);
$('button#'+hash).trigger("click")
url
只需用类似的东西替换字符串window.location
;
演示
var url = "mywebsite.com/faq#how";
var hash = url.substring(url.indexOf('#')+1);
$('button#'+hash).trigger("click")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
<div class="card">
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" id="how" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
How?
<i class="fa fa-angle-down float-right"></i>
</button>
</h2>
</div>
<div id="collapseOne" class="collapse" aria-labelledby="headingOne">
<div class="card-body mr-3 ml-3">
Lorem Ipsum
</div>
</div>
</div>
<!-- Card 2 -->
<div class="card">
<div class="card-header" id="headingTwo">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed" id="why" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Why?
<i class="fa fa-angle-down float-right"></i>
</button>
</h2>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo">
<div class="card-body mr-3 ml-3">
Lorem Ipsum
</div>
</div>
</div>