代码之家  ›  专栏  ›  技术社区  ›  Juho Vepsäläinen

如何以编程方式设置jquery用户界面切换?

  •  1
  • Juho Vepsäläinen  · 技术社区  · 16 年前

    我注意到可以按以下方式设置jquery用户界面滑块的值:

    $("#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 回复  |  直到 15 年前
        1
  •  1
  •   jweyrich    16 年前

    尝试使用.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'));
        }
    );
    
        2
  •  1
  •   Juho Vepsäläinen    15 年前

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

    var $toggle = $("#" + attributeName);
    
    $toggle.attr("checked", !$toggle.attr("checked")).button("refresh");
    

    当jquery ui切换通过“checked”获得它们的初始值时,我决定将其用于我的优势。refresh”确保其视觉状态也得到更新。