javascript - 有没有更快的方法来设置下拉列表中的选定值?

标签 javascript jquery

我有一个下拉列表和一个选择列表。两者都包含很多相同的项目。基本上,我是根据已单击的列表项索引设置下拉列表的选定值。

代码是:

$('.dropdown-list li').click(function(){
    $('#edit-type option').removeAttr('selected', 'selected');
    var listvalue = $(this).index();
    $('#edit-type option').eq(listvalue).attr('selected', 'selected');
});

这行得通,但速度很慢。在选择下拉选项之前有 3/4 秒的延迟。

有没有更快的方法来做到这一点?

编辑:

<select id="edit-type" name="type" class="form-select" style="display: none; ">
<option value="All">- Any -</option>
<option value="171">item Name 1 </option>
<option value="172" selected="selected">item Name 2</option>
</select>

<ul class="dropdown-list">
<li><div><span>item Name 1</span></div></li>
<li class="selected"><div><span>item Name 2</span></div></li>
</ul>

我这样做的原因是我可以创建一个样式化的下拉菜单。

谢谢 罗伯特

最佳答案

如果这么慢,您可能在列表中有很多项目。最快的方法应该是直接设置选择的索引:

$('.dropdown-list li').click(function(){
    var oDDL = $('#edit-type');
    if (oDDL.length > 0)
        oDDL[0].selectedIndex = $(this).index();
});

如果你真的有很多项目,使用 .on() 会更好,它将在幕后创建单个处理程序,而不是为每个列表项创建处理程序:

$('.dropdown-list').on('click', 'li', function() {
    //...
});

Live test case .

关于javascript - 有没有更快的方法来设置下拉列表中的选定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869798/

相关文章:

javascript - 在 JavaScript 中的嵌套 if 中使用数组未定义

javascript - CSS 全屏框在 Firefox 中工作,但在 Chrome 中不起作用

javascript - 如何使用 Javascript 关键字作为变量名?

javascript - 使用 jQuery 和 Javascript 的 for 循环内的函数

jquery - 在 jquery-ui slider 函数中调用插件

javascript - 使用 jQuery 遍历 <div> 列表

javascript - 增加并创建空图像框,直到数量为偶数

javascript - 'year()' 和 'format(' YYYY')' 有什么区别?

javascript - 可靠的文件缓存

javascript - 动态创建的元素上的事件绑定(bind)?