【发布时间】:2015-07-14 22:17:06
【问题描述】:
我有一个下拉菜单,我想在点击它们时触发一些东西。
我不确定我是否应该使用.change 或.click 或者哪一个是这样的最佳实践。
但现在我使用.click。
HTML
<div id="dd" class="wrapper-dropdown-1" tabindex="1"> <span class="summary-texts">Summary</span>
<ul class="dropdown">
<!-- Dynamic List will added here -->
</ul>
</div>
我曾经拥有的
$('#group-0').click(function() {
updateInfo("0");
chart.draw( data[0] , options);
$("#dd.wrapper-dropdown-1 .summary-texts").text('Group 0 ');
});
$('#group-1').click(function() {
updateInfo("1");
chart.draw( data[1] , options);
$("#dd.wrapper-dropdown-1 .summary-texts").text('Group 1 ');
});
$('#group-2').click(function() {
updateInfo("2");
chart.draw( data[2] , options);
$("#dd.wrapper-dropdown-1 .summary-texts").text('Group 2 ');
});
$('#group-3').click(function() {
updateInfo("3");
chart.draw( data[3] , options);
$("#dd.wrapper-dropdown-1 .summary-texts").text('Group 3 ');
});
$('#group-4').click(function() {
updateInfo("4");
chart.draw( data[4] , options);
$("#dd.wrapper-dropdown-1 .summary-texts").text('Group 4 ');
});
它并不像你看到的那么好,很多硬编码值。所以我重构了我的代码。
我现在拥有的
for (var assignment in objects.assignments ) {
$('#group-'+assignment).click(function() {
updateInfo(assignment);
chart.draw( data[assignment] , options);
$("#dd.wrapper-dropdown-1 .summary-texts").text('Group '+assignment);
});
}
结果
当我从下拉菜单中选择任何内容时,它一直显示Group 4。
我不知道为什么会这样。
我是否以正确的方式优化它?
如何处理下拉菜单的任何更改操作?
任何帮助/提示/建议都会对我有很大帮助。
【问题讨论】:
-
您使用什么库进行选择?
-
不是真正的库,我只是用 css 设置样式。
-
我想要
$('[id^="group-"']).on('click',function(){var assignment=$(this).attr('id').replace('group-','');/*assignment code*/});而不是 for 循环 -
@depperm :随意回答,这样更容易阅读。只是说
标签: javascript jquery html drop-down-menu