如何在jQuery Mobile中触发多选框的onClose事件

4

如何判断用户关闭了多选框?

jQuery Mobile文档中没有相关说明。

我正在寻找类似于onClose事件的方法。

我已经尝试将onBlur设置为选择器,但没有效果。

感谢任何帮助。

1个回答

0

当发生任何特定的UX时,您可以使用.trigger()自定义事件:

$(document).delegate('.ui-selectmenu-screen', 'click', function () {

    //find the select and trigger a `close` event since the overlay was clicked
    $(this).prev().find('select').trigger('close');
}).delegate('.ui-select', 'click', function () {

    //find the select and trigger an `open` event since the menu was clicked
    $(this).find('select').trigger('open');
});

我无法确切地弄清楚如何绑定到小部件的 X(关闭)按钮,但我相信您可以触发一个自定义事件。

使用上述代码,现在您可以为 select 元素注册 openclose 事件的事件处理程序:

$(document).delegate('#select-choice-9', 'open close', function (event) {
    console.log(event.type);
});

这是一个演示:http://jsfiddle.net/AaKnG/

控制台没有为我记录所有这些事件。 - shanabus
@shanabus 你用的是什么浏览器?我测试过了:Chrome 17,Firefox 10,IE 9/8/7,Opera 11,Safari 5。你应该能看到“打开”和“关闭”事件...这里有一个更新的JSFiddle:http://jsfiddle.net/AaKnG/1/。唯一的区别是通过“alert”进行通知,这样你就不会错过它。另外,请注意,当小部件被打开时,只会触发“打开”事件,当小部件被点击外部(而不是点击“X”按钮)关闭时,才会触发“关闭”事件。 - Jasper
在Chrome 18中,只有open警报会触发。 - shanabus
问题在于,它会在文档中的每个选择上触发“close”。 - Aley
另一个问题:如果列表太长而无法在列表视图中打开它,它将在具有不同标记的对话框中打开。 - Aley
@Aley 这个答案本意是为了让你能够找到解决问题的起点。几乎肯定有更好的方法来定位相应的 select 元素。例如,jQuery Mobile 框架可以很好地完成这个任务,所以也许你可以从 $.data(<select element>) 中获取一些信息。 - Jasper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接