如何以编程方式设置jQuery UI切换?

时间:2010-04-11 16:20:38

标签: jquery jquery-ui

我注意到可以通过以下方式设置jQuery UI滑块的值:

$("#mySlider").slider("value", 42);

这会按预期触发附加到滑块的事件处理程序。

现在我正在尝试使用按钮(切换)执行相同的操作。在API中似乎没有一种很好的方法可以做到这一点。我可能只是遗漏了一些简单的东西。

我尝试了以下但没有结果:

$("#myButton").button().click();

欢迎任何想法如何处理这种情况。请注意,找到适用于按钮组的解决方案也很棒。

修改

请注意,我需要此特定功能来模拟用户。这里有一些代码可以更好地说明问题:

function toggleBrushValue(hotkey, attributeName) {
    shortcut.add(hotkey, function(e) {
        //XXX: the missing part
        $("#" + attributeName).<something?>;
    });
}

function increaseBrushValue(hotkey, attributeName) {
    shortcut.add(hotkey, function(e) {
        var currentSize = $("#" + attributeName).slider("value");

        $("#" + attributeName).slider("value", currentSize + 1);
    });
}

2 个答案:

答案 0 :(得分:2)

花了一段时间,但最后我找到了解决问题的方法。 :)这是我的解决方案:

var $toggle = $("#" + attributeName);

$toggle.attr("checked", !$toggle.attr("checked")).button("refresh");

当jQuery UI切换通过“checked”获得初始值时,我决定使用它来获得优势。 “刷新”确保其视觉状态也得到更新。

答案 1 :(得分:1)

尝试使用.toggle(),如下所示:

$("#myButton").toggle(
    function() {
        $("#mySlider").slider("value", 42);
    },
    function() {
        // something else...
    }
);

由于您提供了正确的选择器,因此它也适用于按钮组。例如:

<input id="myButton" ...>
<input id="myButton" ...>
<input id="myButton" ...>

$('#myButton').toggle()将针对上述每个元素执行。此外,如果您需要在功能本身内与按钮进行互动,请使用this$(this)。例如:

$("#myButton").toggle(
    function() {
        alert($(this).attr('id'));
    },
    function() {
        alert($(this).attr('name'));
    }
);