jQuery Mobile - 触发已选择的选项

时间:2012-04-24 13:17:02

标签: javascript-events jquery-mobile jquery

我正在尝试在再次选择已选择的选项时触发事件。 我尝试了不同的点击和触发功能,但没有。请帮忙。

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');
    }
});

2 个答案:

答案 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')来调用您的代码,就像用户将其更改为当前值一样