2010-04-11 83 views
1

我注意到它可以设置一个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); 
    }); 
} 

回答

1

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

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

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

在jQuery UI切换获得通过“检查”他们的初始值,我决定用它来我的优势。 “刷新”确保其视觉状态也得到更新。

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')); 
    } 
); 
+0

滑块示例的想法是为了说明预期的API以及需要调用附加到该元素的所有处理程序。我需要通过快捷方式修改切换的状态。我将编辑问题以突出显示。 – 2010-04-11 17:07:28

+0

您可以继续使用切换按钮,并通过调用'$(“#myButton”)。trigger('click')'来触发其单击事件。 – jweyrich 2010-04-14 17:32:31