Javascript jQuery选择选项跳过选项组键盘箭头
我试图用jQuery和CSS使这个自定义选择与键盘箭头一起工作,但我遇到了一些问题。存在选项组时,不会选择下一个选项 我相信问题发生在以下代码行中,因为它找不到下一个选项,但如果在选项组中选择其中一个选项,则可以选择下一个选项,直到找到另一个选项组: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 { /
// 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);