1

我将 jQuery UI 按钮集用于一对开/关按钮,主要是因为您使用它可以获得漂亮的样式。我想处理点击,这样当您单击两个按钮之一时,您会看到一个对话框,您可以在其中做出更多选择,然后页面重新加载按钮处于新状态(如果状态已更改,可能不会是这样)。

问题在于,您单击的按钮在调用任何单击处理程序之前被设置为选中状态,看起来。我不想改变选择,我想手动进行。

似乎 click 事件绑定到 jQuery UI 创建的标签,我在解除绑定时有点挣扎。我想我也在问是否有其他方法可以在没有该功能的情况下获得样式......因为 buttonset 不提供任何事件处理程序,我无论如何都需要自己捕获点击事件。

我现在正在考虑的解决方案是将buttonset生成的html复制到我的代码中,保留css并删除buttonset调用。我认为在放弃之前检查 StackOverflow 可能是值得的。:)

4

1 回答 1

3

由于 jQuery UI 不会触发之前运行的任何事件以进行实际选择,因此完成此操作的变通方法将相对比较麻烦。我能想到的最好办法是以编程方式记住先前选择的选项,然后附加一个click处理程序来确定您是否应该恢复 jQuery UI 对新按钮的选择。

$('#parent_container').buttonset();
var selectedButton = $('#parent_container :checked');
$('.ui-button').on('click', function() {
    setTimeout(function() {
        //Insert your actual check here.
        if (true) {
            selectedButton.attr('checked', true);
            $('#radio').buttonset('refresh');
        } else {
            selectedButton = $('#parent_container :checked');
        }
    }, 1);
});​

setTimeout必要确保它在 jQuery UI 的点击处理程序之后运行。由于您正在显示一个对话框,您可能需要更改它以立即恢复选择,但请记住用户尝试选择的内容以供将来使用。

我在这里有一个总是拒绝用户选择的例子 - http://jsfiddle.net/tj_vantoll/s6XTu/14/

显然,这不是一个理想的方法,但它确实有效。jQuery UI 应该真正添加对选择事件的支持;我会设法解决这个问题。按钮插件将在 1.11 - http://wiki.jqueryui.com/w/page/12138038/Roadmap中进行一些更新。

于 2012-07-05T15:35:43.877 回答