使用jQuery更改Chosen.js选择框的值
我正在尝试更改具有Chosen.js叠加层的选择框的值。 我们的想法是在用户单击按钮时更改所选值。
使用常规选择框,我可以通过执行以下操作来更改值:
$('#GroupsShowNext').unbind("click").click(function() { var index = $("#GroupsViewGroups").prop("selectedIndex"); index += 1; $('#GroupsViewGroups option').eq(index).attr('selected', 'selected'); $('#GroupsViewGroups').change(); });
但是使用Chosen.js它不再起作用了。我尝试了很少的东西,但没有任何效果。 任何想法如何让它工作?
小提琴
所以在发布这个问题后,我继续尝试解决这个问题,并碰巧找到了一种方法来做到这一点。
$('#GroupsShowNext').unbind("click").click(function() { var index = $("#GroupsViewGroups").prop("selectedIndex"); index += 1; $('#GroupsViewGroups option').eq(index).attr('selected', 'selected'); $('#GroupsViewGroups').chosen().change(); $("#GroupsViewGroups").trigger("liszt:updated"); });
关键是在.change()之前放入.chosen()然后触发“liszt:updated”。 它有效,但我不知道这是否是最好的方法..
如果您有更好的方法,请告诉我
我偶然发现了这一点,试图弄明白自己。
我能够通过更改原始字段上的选定索引,然后在该字段上触发liszt:updated
事件来完成此操作:
$('#GroupsViewGroups')[0].selectedIndex = $('#GroupsViewGroups')[0].selectedIndex + 1; $('#GroupsViewGroups').trigger('liszt:updated');
只是一个更新(我从谷歌找到这个页面,也许其他人也会发现它)
我试着评论@ splitz的答案,但我不能,因为我仍然没有足够的声誉。
新方法是:
$('#GroupsShowNext').unbind("click").click(function() { var index = $("#GroupsViewGroups").prop("selectedIndex"); index += 1; $('#GroupsViewGroups option').eq(index).attr('selected', 'selected'); $("#GroupsViewGroups").trigger("chosen:updated"); });
现在,诀窍是“选择:更新”。
更新的答案: 使用Chosen插件更改选择中的选择
使用插件Chosen.js它的工作原理。
var myIndex = 4; $("select#GroupsViewGroups").prop('selectedIndex', myIndex);