我注意到可以通过以下方式设置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);
});
}
答案 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'));
}
);