Javascript jQuery选择选项跳过选项组键盘箭头

Javascript jQuery选择选项跳过选项组键盘箭头,javascript,jquery,css,drop-down-menu,Javascript,Jquery,Css,Drop Down Menu,我试图用jQuery和CSS使这个自定义选择与键盘箭头一起工作,但我遇到了一些问题。存在选项组时,不会选择下一个选项 我相信问题发生在以下代码行中,因为它找不到下一个选项,但如果在选项组中选择其中一个选项,则可以选择下一个选项,直到找到另一个选项组: // Down } else if (event.keyCode === 40) { if (!$dropdown.hasClass('open')) { $dropdown.trigger('click'); } else { /

我试图用jQuery和CSS使这个自定义选择与键盘箭头一起工作,但我遇到了一些问题。存在选项组时,不会选择下一个选项

我相信问题发生在以下代码行中,因为它找不到下一个选项,但如果在选项组中选择其中一个选项,则可以选择下一个选项,直到找到另一个选项组:

// Down
} else if (event.keyCode === 40) {
  if (!$dropdown.hasClass('open')) {
    $dropdown.trigger('click');
  } else {
// In this line here, it can't find the next option
    var $next = $focused_option.nextAll('.option:not(.disabled)').first();
    if ($next.length > 0) {
      $dropdown.find('.focus').removeClass('focus');
      $next.addClass('focus');
    }...// Rest of the key listeners
以下是完整的代码:

/*jQuery尼斯精选版-v1.1.0
https://github.com/hernansartorio/jquery-nice-select
赫尔南·萨托里奥制作
定制人:雨果·博尔赫斯
马可·梅萨
*/
(函数($){
$.fn.niceSelect=函数(方法){
//方法
if(typeof方法=='string'){
如果(方法=='update'){
这个。每个(函数(){
变量$select=$(此变量);
var$dropdown=$(this.next('.nice select');
var open=$dropdown.hasClass('open');
var focused=$select.parents('.form-group-select').hasClass('focused');
如果($dropdown.length){
$dropdown.remove();
创建_nice_select($select);
如果(打开){
$select.next().trigger('click');
}否则,如果(聚焦){
$select.parents('.form group select').toggleClass('focused');
}
}
});
}else if(方法=='destroy'){
这个。每个(函数(){
变量$select=$(此变量);
var$dropdown=$(this.next('.nice select');
如果($dropdown.length){
$dropdown.remove();
$select.css('display','');
}
});
如果($('.nice select')。长度===0){
$(文档).off('.nice_select');
}
}否则{
log('Method'+Method+'不存在');
}
归还这个;
}
//隐藏本机选择
this.hide();
//创建自定义标记
这个。每个(函数(){
变量$select=$(此变量);
if(!$select.next().hasClass('nice-select')){
创建_nice_select($select);
}
});
函数create\u nice\u select($select){
$select.after($('')
.addClass('nice-select')
.addClass($select.attr('class')| |“”)
.addClass($select.attr('disabled')?'disabled':“”)
.attr('tabindex',$select.attr('disabled')?null:'0')
.html(“
    ”) ); var$dropdown=$select.next(); var$options=$select.find('option'); var$optgroups=$select.find('optgroups'); var$selected=$select.find('option:selected'); $dropdown.find('.current').html($selected.data('display')| |$selected.text()); $options.each(函数(){ var$选项=$(此选项); 变量显示=$option.data('display'); var group=$option.parents('optgroup')。data('i'); $dropdown.find('ul').append($('
  • ')) .attr('data-value',$option.val()) .attr('data-display',(display | | null)) .attr('data-group',(group | | null)) .addClass('选项'+ ($option.is(':selected')?'selected':'')+ ($option.is(':disabled')?'disabled':'') .html($option.text()) ); }); $optgroups.each(函数(i,g){ label=$(g).attr('label'); $dropdown.find('ul li').filter(函数(){ 返回$(this.data('group')==$(g.data('i'); }) .wrapAll(“”) .parent() .前置(“”+标签+“”); }); } /*事件侦听器*/ //如果插件之前已初始化,则取消绑定现有事件 $(文档).off('.nice_select'); //打开/关闭 $(文档).on('click.nice_select','.nice select',函数(){ var$下拉列表=$(此); $('.nice select').not($dropdown)。removeClass('open'); $dropdown.toggleClass('open'); if($dropdown.hasClass('open')){ $dropdown.find('.option'); $dropdown.find('.focus').removeClass('focus'); $dropdown.find('.selected').addClass('focus'); }否则{ $dropdown.focus(); } }); //单击外部时关闭 $(文档).on('click.nice_select',函数(事件){ if($(event.target).closest('.nice select')。长度==0){ $('.nice select').removeClass('open').find('.option'); } }); //加载页面的动画 $('select')。在('blur',函数(e)上{ $(this).parents('.form-group-select').toggleClass('focused',(e.type==='focus'| | this.value!=''); }).触发(“模糊”); //选项点击 $(文档).on('click.nice_select',')。nice select.option:not(.disabled'),function(){ var$option=$(此); var$dropdown=$option.closest('.nice select'); $dropdown.find('.selected').removeClass('selected'); $option.addClass('selected'); var text=$option.data('display')| |$option.text(); $dropdown.find('.current').text(text); $dropdown.prev('选择
    var $all_options = $dropdown.find(".option:not(.disabled)");
    var $next = $all_options.eq($all_options.index($focused_option) + 1);