我正在尝试在再次选择已选择的选项时触发事件。 我尝试了不同的点击和触发功能,但没有。请帮忙。
HTML:
<select id="mySelect" name="mySelect">
<option class="mylistitem" value="0" selected="selected">Option 0</option>
<option class="mylistitem" value="1">Option 1</option>
<option class="mylistitem" value="2">Option 2</option>
</select>
JS:
$("#mySelect").live("change", function () {
alert($("#mySelect").val());
});
或http://jsfiddle.net/pioSko/tcWRP/38/
更新:结合两个答案;)http://jsfiddle.net/pioSko/tcWRP/60/
$(document).delegate('#mySelect-menu li', 'vmousedown', function (event) {
if ($(this).attr('aria-selected') === 'true') {
$('#mySelect').trigger('change');
}
});
答案 0 :(得分:2)
如果您使用原生选择菜单,那么您将很快遇到问题。但是如果您使用jQuery Mobile样式选择菜单,那么您可以将事件处理程序绑定到菜单小部件,因为它由DIV和SPAN组成。
$(document).delegate('#mySelect-menu li', 'vmousedown', function (event) {
if ($(this).attr('aria-selected') === 'true') {
alert('That is already selected.');
}
});
以下是演示:http://jsfiddle.net/ys8Kh/
基本思路是跟踪自定义选择菜单中“选项”元素(实际列表项)的点击,并检查area-selected
属性以查看该元素是否已被选中。该值由jQuery Mobile自动更新。
请注意,#mySelect-menu
是作为jQuery Mobile选择菜单的自定义选择菜单界面创建的UL元素。另请注意,vmousedown
是一个自定义jQuery Mobile事件,可帮助处理鼠标和触摸事件。我之所以选择vmousedown
,是因为它在select的值发生变化之前触发,因此我们可以看到click
ed元素是否已被选中。
此外,要强制非本机选择窗口小部件,请将此属性添加到SELECT标记:data-native-menu="false"
。
答案 1 :(得分:2)
我通常会拨打$("#mySelect").trigger('change')
来调用您的代码,就像用户将其更改为当前值一样