动机:
我想动态加载一个select
使用来自 AJAX 调用的值,并允许用户select加载后列表中的第一项after它获得焦点,现在,第一项是selected项目,当您单击下拉列表并单击第一项时,什么也没有发生。我无法添加任何无效选择的占位符项目。
问题:
你如何发射.change
当当前选择的选项被重新选择/未更改时,jQuery 中的事件?
鉴于以下情况:
<select id="myoptions">
<option id="one" >Option 1</option>
<option id="two">Option 2</option>
</select>
假设该选项one
被选中,然后我单击下拉菜单并select one
再说一遍,什么事件会触发?
$('#myoptions').change(function() {
alert('You selected something!');
}
如果我选择不同的内容,上面的代码就会起作用,但如果我选择当前选定的选项,则不会发生任何情况。
换句话说 :
如果我点击下拉菜单并"select"当前选择的选项,如何触发事件?
不回答:
所有这些建议都是关于trigger
不是解决方案,我需要一些当我click on Option 1
用鼠标 when Option 1
已经是选定的选项。
我尝试使用.click
然后也什么也没有发生。
所有答案都不是适用于该用例的可行解决方案第一次下拉菜单被选中,并且有人selects默认选择的选项。什么都没发生。
focusout
不是一个解决方案,直到有人点击其他地方它才会发生,这在游戏中为时已晚。
您可以使用单击事件或焦点移出。
如果用户仅使用 Tab + Enter 之类的键盘,则单击事件将不起作用,但 focusout 将起作用。
Edit:
添加了一个演示:http://jsfiddle.net/fPRe7/ http://jsfiddle.net/fPRe7/即使您单击选定的项目,单击也会起作用。
$("#myoptions").on("click", function(){
console.debug("click");
});
$("#myoptions").on("change", function(){
console.debug("changed");
});
$("#myoptions").on("focusout", function(){
console.debug("focusout");
});
Chrome 只会获得 1 次点击(选择一项),但 FF 会获得 2 次点击,打开选择时点击一次,选择一项时点击另一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)