我为 class=faqQuestion 的元素动态生成一个目录。
答案位于默认隐藏的 class=faqAnswer 元素中。
通过单击 class=faqQuestion 条目,它将显示为
$(this).next(".faqAnswer").slideToggle(300);
一切都按预期工作。
我想要什么:通过单击目录链接,我将跳转到目标 faqQuestion 元素并显示相应的 faqAnweser 元素。
我生成目录的方式:
$(document).ready(function(){
var url = window.location.pathname;
$('<ol />').prependTo('#toc')
$(".faqQuestion").each(function(i) {
var current = $(this);
current.attr("id", "entry" + i);
$("#toc ol").append("<li class=\"faqToc\"><a id='link" + i + "' href='" + url + "#entry" +
i + "' entry='" + current.attr("tagName") + "'>" +
current.html() + "</a></li>");
});
这是我尝试过的,它将跳转到选定的 faqQuestion,但 faqAnswer 元素仍然隐藏。
$(".faqToc").click(function(event){
$(this).next(".faqAnswer").slideToggle(300);
});
我的问题是这个——至少我是这么认为的——所以我尝试了类似的东西——导致“未定义”
var url = $(this).prop("href");
alert(url);
尝试 attr 而不是 prop 返回也“未定义”。
你能指出我的问题吗?
我正在尝试改进我的 Javascript 和 jQuery 知识,所以我不想使用 toc 插件。
更新:HTML 看起来像这样:
<div id="toc">
<ol>
<li class="faqToc">
<a href="/faq/#entry0">...</a>
</li>
<li class="faqToc">
<a href="/faq/#entry1">...</a>
</li>
</div>
<p id="entry0" class="faqQuestion">...</p>
<div class="faqAnswer" style="display: none;">...</div>
<p id="entry1" class="faqQuestion">...</p>
<div class="faqAnswer" style="display: none;">...</div>