我还在学习一些关于 javascript/jquery 的知识并遇到了困难。我发布的每一篇文章似乎都使这个过程过于复杂,除非它确实需要所有额外的代码。
这就是我正在做的事情:
- 使用滑动菜单和静态子菜单创建垂直导航菜单
- 使用带有 DL、DT 和 DD 的 HTML (5) 布局
- 导航菜单使用次要 CSS 进行样式设置
- 导航菜单使用 jQuery (1.8.3)
我的一切都按我想要的方式工作,但是因为我很挑剔,所以我想在展开菜单后暂时禁用链接。如果我尝试单击已展开的菜单,它会向上滑动然后再向下滑动。我想做的是让它在它已经展开的情况下不会对点击做出反应。
导航菜单的 HTML:
<dl class="nav2">
<dt><a href="#">Thing1</a></dt>
<dd>
<ul>
<li><a href="#">Test Def1</a></li>
<li><a href="#">Test Def2</a><li>
<li><a href="#">Test Def3</a></li>
</ul>
</dd>
<dt><a href="#">Thing2</a></dt>
<dd>
<ul>
<li><a href="#">Test Def4</a></li>
<li><a href="#">Test Def5</a><li>
<li><a href="#">Test Def6</a></li>
</ul>
</dd>
<dt><a href="#">Thing3</a></dt>
<dd>
<ul>
<li><a href="#">Test Def7</a></li>
<li><a href="#">Test Def8</a><li>
<li><a href="#">Test Def9</a></li>
</ul>
</dd>
</dl>
导航菜单的 jQuery:
$(document).ready(function() {
$("dd:not(:first)").hide();
$("dt a").click(function() {
/* was thinking the added code would go here, but I could be wrong */
$("dd:visible").slideUp("fast");
$(this).parent().next().slideDown("fast");
return false;
});
});
我用 bind 和 one 尝试了一些东西,但是由于我对编写 js/jquery 的困惑,我没有找到我的窍门。有没有可能这样说:
$(this:active).unbind("click");
或者
if ($(this).active(function() {
$(this).unbind("click");
} else {
$(this).bind("click");
)};
我知道我可能很遥远,但我正在努力。有什么方法可以将其更改为 javascript/jQuery 吗?
When the DT A is clicked -
make THIS DT / DT A not clickable;
When THIS DT / DT A is no longer expanded or visible -
make THIS DT / DT A clickable;
感谢高峰。对不起,如果这是在某个地方发现的。我遇到的每篇文章都开始将这个微小的变化扩展为几行代码,无论是攻击 CSS,还是比似乎需要的 javascript/jQuery 更长,或者两者兼而有之。我只是真的想尽量保持它的包含和简单(如果可能的话)。