Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将焦点移到下一个”;李",;忽略所有嵌套元素的元素_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 将焦点移到下一个”;李",;忽略所有嵌套元素的元素

Javascript 将焦点移到下一个”;李",;忽略所有嵌套元素的元素,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有如下结构的菜单 $('html').removeClass('no-js'); //为具有子菜单的li添加加号 $('li:has(“ul”)>a')。追加('+'); 捕鼠器绑定('down',函数(e){ 如果($(“.manu-t”).children(“ul”).children(“li”).children(“:focus”).length!=0){ //下面提到了我迄今为止所做的尝试 } }); #导航, #美国海军, #李海军{ 保证金:0; 填充:0; 边界:0; 列表样式

我有如下结构的菜单

$('html').removeClass('no-js');
//为具有子菜单的li添加加号
$('li:has(“ul”)>a')。追加('+');
捕鼠器绑定('down',函数(e){
如果($(“.manu-t”).children(“ul”).children(“li”).children(“:focus”).length!=0){
//下面提到了我迄今为止所做的尝试
}
});
#导航,
#美国海军,
#李海军{
保证金:0;
填充:0;
边界:0;
列表样式:无;
框大小:边框框;
}
#导航{
位置:相对位置;
最小高度:30px;
最大宽度:100%;
背景色:#B5;
颜色:#000;
}
#李海军{
位置:相对位置;
}
#导航a{
文字装饰:无;
身高:100%;
显示:块;
填充:0 20px;
}
#nav>ul,
法兰西{
高度:30px;
线高:30px;
}
#导航>ul>li{
位置:相对位置;
文本对齐:居中;
}
#导航>ul>li>a{
背景色:#B5;
}
#导航>超视距>视距>a:悬停,
#导航>ul>李>a:聚焦,
#nav>ul>li>a.js-OPEN子菜单{
背景色:#5F5F;
}
#导航>ul>li:悬停>a,
#导航>ul>li:焦点>a{
背景色:#5F5F;
颜色:#fff;
}
#导航>超视距>超视距>超视距>超视距>超视距{
背景色:#5F5F;
}
#导航>超视距>超视距>超视距>超视距a:悬停,
#导航>超视距>超视距>超视距>超视距:聚焦{
背景色:#B5;
}
#nav>ul>li>ul>li:不是(:最后一个孩子)a{
边框底部:1px实心#b5;
}
#导航>超视距>超视距>超视距>超视距>超视距>超视距>超视距{
背景色:#B5;
}
#导航>超视距>超视距>超视距>超视距>超视距>超视距a:悬停,
#导航>超视距>超视距>超视距>超视距>超视距>超视距:聚焦{
背景色:#5F5F;
}
#nav>ul>li>ul>li>ul>li:not(:last child)>a{
边框底部:1px实心#5f5f;
}
/*Javascript类*/
#导航js隐藏元素{
显示:无;
}
#js showElement{
显示:块;
}


您可以使用CSS选择器在数组中存储要“聚焦”的元素。为“keydown”事件添加事件处理程序-如果
e.code
显示用户单击了向下箭头,则迭代到数组中的下一个元素。我使用了一个生成器函数来实现这一点,当我们到达数组末尾时,该函数将旋转回
0
索引:

函数*nextElGenerator(){
var liEls=document.queryselectoral('.menu-t>ul>li>a:first child');
var i=0;
while(true){
产量指数[i];
i+=1;
如果(i==直线长度){
i=0;
}
}
}
常量BulletelTR=nextElGenerator();
让curEl;
document.addEventListener('keydown',e=>{
如果(e.code==='ArrowDown'){
if(curEl){
curEl.style.backgroundColor=‘透明’;
}
curEl=bulletelistr.next().value;
curEl.style.backgroundColor='黄色';
}
});

我想把重点放在第2项的元素上。然后是第3项的元素

您可以使用:

$("a:focus").closest("li").next().find("a").first().focus();
工作代码段:

//为具有子菜单的li添加加号
$('li:has(“ul”)>a')。追加('+');
//设定初始焦点
$(“#nav>ul>li.menu-t>ul>li>a:first()”).focus();
$(文档).on(“向下键”,函数(e){
如果(e.keyCode==40){
$(“a:focus”).closest(“li”).next().find(“a”).first().focus();
返回false;
} 
如果(e.keyCode==38){
$(“a:focus”).closest(“li”).prev().find(“a”).first().focus();
返回false;
}
//如果($(“.manu-t”).children(“ul”).children(“li”).children(“:focus”).length!=0){
//下面提到了我迄今为止所做的尝试
//}
});
a{文本装饰:无;}
:focus{背景色:黄色;}


给定您的html结构:
$('a').eq(聚焦索引)。最近的(“li”).next().find(“a”).first().focus()仅供参考,
bind
是旧语法,已被弃用。请看
@freedomn-m上的
,我已经尝试过该代码,但它正在将焦点转移到Menu2上。不是下一个“李”元素。请帮我解决这个问题,谢谢你的建议。@isherwood我同意,但你会看到这种情况经常发生(可能不会发生在其他溢出站点),因为像我这样的人想提供帮助,但没有时间给出完整的答案。简短的回答吸引了反对票。相反的论点当然是“如果你没有时间就不要回答”。你问:“那么我怎样才能将焦点从项目1移到项目2。”-因为没有“菜单”,看起来“项目2”/“菜单2”是一样的-你当前的焦点是“项目1”(代码)所以你应该关注“项目2”(下一个
)-您也不能专注于
li
元素。也许你可以