jQuery Mobile 多选点击事件

Posted

技术标签:

【中文标题】jQuery Mobile 多选点击事件【英文标题】:jQuery Mobile multi select click event 【发布时间】:2012-09-04 21:42:54 【问题描述】:

如何在 jQuery Mobile 多选中触发点击事件?

我正在尝试在选择选项中添加一个关闭按钮,因为我不觉得 (X) 关闭按钮是直截了当的。此处讨论此主题 (http://***.com/questions/10004719/jquery-mobile-multi-select-box),答案是:

您可以添加关闭作为选项,然后在单击时触发对话框关闭方法

不讨论如何触发点击事件。我尝试了以下方法:

$("#selectmenu").change(function() 
alert('Changed!!'););

$(document).delegate('.ui-selectmenu-screen', 'click', function () 
alert('changed');
).delegate('.ui-selectmenu .ui-btn-inner', 'click', function (event) 
alert('changed2'););

$('#selectmenu').on('change', function () 
alert('changed'););

$('#selectmenu').live('change', function () 
alert('changed'););

$('#pageName').on('click', '.ui-selectmenu-list > li', function () 
alert('changed'););

$("#selectmenu").live( "click", function(event, ui) 
alert('changed'););

$("#selectmenu").bind( "click", function(event, ui) 
alert('changed'););

【问题讨论】:

【参考方案1】:

您将使用 $.selectmenu() 方法 found here 并绑定到 change 事件,如下所示:

HTML

<div data-role="fieldcontain">
    <select name="selectmenu" id="selectmenu" multiple="multiple">
        <option value="value1">Value 1</option>
        <option value="value2">Value 2</option>
        <option value="value3">Value 3</option>
        <option value="close">Close</option>
    </select>
</div>

关闭选择菜单

$(document).delegate('#selectmenu', 'change', function()
    var str = $('#selectmenu option:selected').val(); // Get Value of Option

    if (str == 'close')
        $('#selectmenu').selectmenu('close');
    
);

添加价值

function addValues($el)
    var total = 0;
    $('option', $el).each(function()
        var value = parseInt($(this).val());
            value = (isNaN(value-0)) ? 0 : parseInt(value); // Defaults Value to 0 if NaN

        total += value;
    );
    return total;

JSFiddle for Add Values

我希望这会有所帮助!

【讨论】:

非常感谢您的帮助。出于某种原因,我需要使用 .live 而不是 .bind 来使触发器功能起作用。看到它是多选,我使用以下内容检查是否单击了“关闭”: if($.inArray('Close',selected) > -1 ) $('#selectmenu').selectmenu('close ');在我离开页面后,是否有从我的选择菜单选择的选项列表中删除“关闭”选项?我有一个数字选择菜单,我将其转换为我执行计算的整数数组。目前“关闭”选项已转换为 NaN。 @user1299792 我建议使用 $.delegate() 而不是 $.live()。对于关闭选项,您可以执行 isNan() 检查并将其默认为零或忽略它,而不是删除它。我添加了一个示例 Add Values 函数作为示例。祝你好运!

以上是关于jQuery Mobile 多选点击事件的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile click 事件只起作用一次,在由于点击事件而改变 DOM 之后

在iOS上处理jQuery Mobile点击事件后防止点击事件

点击事件上的 jQuery Mobile listview 小部件不会为 Mobile 触发

jQuery Mobile 点击事件没有触发?

JQuery Mobile - 为什么绑定事件后会被多次执行?

jquery中click事件的累加绑定,点击一次,执行多次