下拉菜单 select 无法在移动设备上正常工作
Dropdown select won't work correctly for mobile
我的下拉菜单在桌面上运行良好,但在移动设备上运行不佳。如果我 select 选项之一(A、B、C 等),对于移动设备,它对显示的框没有任何影响。
为什么?移动设备需要提交按钮吗?
脚本:
var $btns = $('.btn').click(function () {
if (this.id == 'all') {
$('#parent > span').fadeIn(250);
} else {
var $el = $('.' + this.id).delay(50).fadeIn(200);
$('#parent > span').not($el).fadeOut(0);
}
$btns.removeClass('active');
$(this).addClass('active');
})
在 option
元素上放置 click
处理程序不是一个好主意,因为它没有得到广泛支持,事实上它在 Chrome 中根本不起作用,更不用说了移动浏览器,这就是导致您出现问题的原因。
而是挂钩到 select
元素上的 change
事件,并从选定的 option
中读取 id
属性。你需要修改你的逻辑,像这样:
$('select').change(function () {
var selectedId = $('option:selected', this).prop('id')
if (selectedId == 'all') {
$('#parent > span').fadeIn(250);
} else {
var $el = $('.' + selectedId).delay(50).fadeIn(200);
$('#parent > span').not($el).fadeOut(0);
}
})
这同样适用于尝试设置所选 option
元素的样式 - 将其留给浏览器设置样式,因为大多数 CSS 属性对它们不起作用。
我的下拉菜单在桌面上运行良好,但在移动设备上运行不佳。如果我 select 选项之一(A、B、C 等),对于移动设备,它对显示的框没有任何影响。
为什么?移动设备需要提交按钮吗?
脚本:
var $btns = $('.btn').click(function () {
if (this.id == 'all') {
$('#parent > span').fadeIn(250);
} else {
var $el = $('.' + this.id).delay(50).fadeIn(200);
$('#parent > span').not($el).fadeOut(0);
}
$btns.removeClass('active');
$(this).addClass('active');
})
在 option
元素上放置 click
处理程序不是一个好主意,因为它没有得到广泛支持,事实上它在 Chrome 中根本不起作用,更不用说了移动浏览器,这就是导致您出现问题的原因。
而是挂钩到 select
元素上的 change
事件,并从选定的 option
中读取 id
属性。你需要修改你的逻辑,像这样:
$('select').change(function () {
var selectedId = $('option:selected', this).prop('id')
if (selectedId == 'all') {
$('#parent > span').fadeIn(250);
} else {
var $el = $('.' + selectedId).delay(50).fadeIn(200);
$('#parent > span').not($el).fadeOut(0);
}
})
这同样适用于尝试设置所选 option
元素的样式 - 将其留给浏览器设置样式,因为大多数 CSS 属性对它们不起作用。