将选择下拉列表转换为<ul>列表,并突出显示所选类别

时间:2017-12-28 12:33:09

标签: jquery html-lists html-select

我有以下&#34;过滤&#34; 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列表中选择/单击某个类别并单击提交按钮时,一旦页面刷新,ul列表不再突出显示先前选择的类别。

在页面加载内容后,任何想法仍然会突出显示该类别。

1 个答案:

答案 0 :(得分:0)

如果我们认为Dropdown列表在刷新页面后具有正确的值,您可以在dom上设置它们,如:

$(document).ready(function() {
    var e =  $('select.filter option:selected').index();
    $('ul.list > li:eq(' + e + ')').addClass('active');
});