将 select 下拉列表转换为 <ul> 列表并突出显示 selected 类别
Convert a select drop down into a <ul> list and have the selected category highlighted
我有以下 "Filter" select
下拉菜单
<select name="sPhrase" id="sPhrase" class="filter">
<option value="bothlevel">BOTH LEVELS</option>
<option value="xplorelevel">XPLORE LEVEL</option>
<option value="xcellevel">XCEL LEVEL</option>
</select>
<input value="GO" class="submit" type="submit">
我已将其转换为 ul
列表并使用 css
使 select 下拉菜单不可见
<ul class="list">
<li><a href="#" data-value="bothlevel">BOTH LEVELS</a></li>
<li><a href="#" data-value="xplorelevel">XPLORE LEVEL</a></li>
<li><a href="#" data-value="xcellevel">XCEL LEVEL</a></li>
</ul>
<input value="GO" class="submit" type="submit">
使用以下 jQuery 代码
$('select.filter').after('<ul class="list"></ul>');
$('select.filter option').each(function () {
$('ul.list').append('<li><a href="#" data-value="'
+ $(this).val() + '">'
+ $(this).text()
+ '</a></li>');
});
// set active to selection and sync
// update dropdown when links selected
$('ul.list > li > a').click(function(){
$('ul.list > li').removeClass('active');
$(this).parent().addClass('active');
var e = $(this).parent().index();
$('select.filter option:eq('+e+')').prop('selected', true);
});
// update list when dropdown selected
$('select.filter').change(function() {
var e = $('option:selected', this).index();
$('ul.list > li').removeClass('active');
$('ul.list > li:eq('+e+')').addClass('active');
});
但是问题是,当 ul 列表中的类别 selected/clicked 并单击提交按钮时,一旦页面刷新,ul 列表不再突出显示之前 selected类别。
在页面加载内容后仍然突出显示类别的任何想法。
如果我们认为下拉列表在刷新页面后具有正确的值,您可以将它们设置为 dom 准备就绪,例如:
$(document).ready(function() {
var e = $('select.filter option:selected').index();
$('ul.list > li:eq(' + e + ')').addClass('active');
});
我有以下 "Filter" select
下拉菜单
<select name="sPhrase" id="sPhrase" class="filter">
<option value="bothlevel">BOTH LEVELS</option>
<option value="xplorelevel">XPLORE LEVEL</option>
<option value="xcellevel">XCEL LEVEL</option>
</select>
<input value="GO" class="submit" type="submit">
我已将其转换为 ul
列表并使用 css
<ul class="list">
<li><a href="#" data-value="bothlevel">BOTH LEVELS</a></li>
<li><a href="#" data-value="xplorelevel">XPLORE LEVEL</a></li>
<li><a href="#" data-value="xcellevel">XCEL LEVEL</a></li>
</ul>
<input value="GO" class="submit" type="submit">
使用以下 jQuery 代码
$('select.filter').after('<ul class="list"></ul>');
$('select.filter option').each(function () {
$('ul.list').append('<li><a href="#" data-value="'
+ $(this).val() + '">'
+ $(this).text()
+ '</a></li>');
});
// set active to selection and sync
// update dropdown when links selected
$('ul.list > li > a').click(function(){
$('ul.list > li').removeClass('active');
$(this).parent().addClass('active');
var e = $(this).parent().index();
$('select.filter option:eq('+e+')').prop('selected', true);
});
// update list when dropdown selected
$('select.filter').change(function() {
var e = $('option:selected', this).index();
$('ul.list > li').removeClass('active');
$('ul.list > li:eq('+e+')').addClass('active');
});
但是问题是,当 ul 列表中的类别 selected/clicked 并单击提交按钮时,一旦页面刷新,ul 列表不再突出显示之前 selected类别。
在页面加载内容后仍然突出显示类别的任何想法。
如果我们认为下拉列表在刷新页面后具有正确的值,您可以将它们设置为 dom 准备就绪,例如:
$(document).ready(function() {
var e = $('select.filter option:selected').index();
$('ul.list > li:eq(' + e + ')').addClass('active');
});