AGE*_*AGE 6 html javascript css jquery
我想看看以下是否可行:
$(document),$(body),$(window)等由于性能的原因.我的实现包含一个非常简单的HTML导航栏,如下面的代码段所示.我在每个<a>标签之间进行原生键盘导航.第一个列表元素是标题,包含可见的锚点,第二个元素
<ul class="test">
<li>
<a href="#">Title</a>
</li>
<li>
<ul>
<li>
<a href="#">Some link</a>
</li>
<li>
<a href="#">Some link</a>
</li>
<li>
<a href="#">Some link</a>
</li>
<li>
<a href="#">Some link</a>
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这个导航栏的目标很简单:
我有1和2,但由于上面列出的要求,3是棘手的.我知道这可以很容易地使用全局选择器来完成,但是这个挑战是要弄清楚并理解是否可以这样做.
$(document).ready(function() {
dropdownMenu = $(".test > ul");
dropdownMenu.hide();
$(".test").focusin(function() {
if (dropdownMenu.is(":hidden")) {
dropdownMenu.show();
}
});
// Some selector for some event here to handle the focus/clicks outside the $(".test") element
});
Run Code Online (Sandbox Code Playgroud)
重要提示:我认为event.stopPropagation();,正如CSS技巧中所解释的- 停止事件传播的危险对于这个问题的范围是一种危险的技术,但是如果使用所述技术导致最有效的方法,那么我将欢迎它.
在没有全局选择器的情况下,这里的一种选择是短暂延迟关闭操作:
var isVisible = false;
$(".test").focusin(function() {
if (dropdownMenu.is(":hidden")) {
dropdownMenu.show();
}
isFocused = true;
});
$(".test").focusout(function() {
isFocused = false;
setTimeout(function() {
if (!isFocused && dropdownMenu.is(":visible")) {
dropdownMenu.hide();
}
}, 100);
});
Run Code Online (Sandbox Code Playgroud)
这有点繁琐,但可以保护您在使用 Tab 键时避免错误关闭。参见https://jsfiddle.net/d5fa5o8q/4/
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |