jQuery Mobile-触发已选择的选项

jQuery Mobile-触发已选择的选项,jquery,jquery-mobile,jquery-events,Jquery,Jquery Mobile,Jquery Events,当再次选择已选择的选项时,我试图触发一个事件。 我尝试过不同的点击和触发功能,但什么都没有。请帮忙 HTML: 或 更新:合并了两个答案;) 如果您使用本机选择菜单,那么很快就会遇到问题。但是如果您使用jQuery移动风格的选择菜单,那么您可以将事件处理程序绑定到菜单小部件,因为它由div和span组成 $(document).delegate('#mySelect-menu li', 'vmousedown', function (event) { if ($(this).attr('

当再次选择已选择的选项时,我试图触发一个事件。 我尝试过不同的点击和触发功能,但什么都没有。请帮忙

HTML:

更新:合并了两个答案;)


如果您使用本机选择菜单,那么很快就会遇到问题。但是如果您使用jQuery移动风格的选择菜单,那么您可以将事件处理程序绑定到菜单小部件,因为它由div和span组成

$(document).delegate('#mySelect-menu li', 'vmousedown', function (event) {
    if ($(this).attr('aria-selected') === 'true') {
        alert('That is already selected.');
    }
});​
下面是一个演示:

基本思想是跟踪自定义选择菜单中“选项”元素(真正的列表项)上的单击,并检查
区域selected
属性以查看该元素是否已被选中。jQuery Mobile会自动更新此值

请注意,
#mySelect menu
是一个UL元素,它被创建为jQuery移动选择菜单的自定义选择菜单界面。还要注意,
vmousedown
是一个定制的jQuery移动事件,有助于处理鼠标和触摸事件。我选择了
vmousedown
,因为它在select的值更改之前触发,所以我们可以查看
click
ed元素是否已经被选中


另外,要强制非本机选择小部件,请将此属性添加到选择标记:
data native menu=“false”

我通常做的是调用
$(“#mySelect”)。触发器('change')
,它将调用您的代码,就像用户将其更改为当前值一样,作为通知:如果再次选择相同的选项,浏览器将标记为未更改。因此不会触发onChange()事件。
$("#mySelect").live("change", function () {
    alert($("#mySelect").val());
});
$(document).delegate('#mySelect-menu li', 'vmousedown', function (event) {
    if ($(this).attr('aria-selected') === 'true') {
        $('#mySelect').trigger('change');
    }
});
$(document).delegate('#mySelect-menu li', 'vmousedown', function (event) {
    if ($(this).attr('aria-selected') === 'true') {
        alert('That is already selected.');
    }
});​