jQuery UI小部件(即Slider)并触发其自定义事件处理程序

Rob*_*nik 3 jquery events jquery-ui slider jquery-ui-slider

如果我们将click事件绑定到链接为

$("linkSelector").click(function(){ ... });
Run Code Online (Sandbox Code Playgroud)

那么即使用户没有点击链接,我们也可以轻松强制执行此事件处理程序.

$("linkSelector").click(function() { ... }).click();
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,我正在使用jQuery Slider小部件,它具有slide可以绑定事件处理程序的事件.我想知道我们如何以编程方式强制执行其事件?

我试过跟随,但没有一个有效:

$("sliderSelector").slider({ slide: function(){ ... } }).slide();
$("sliderSelector").slider({ slide: function(){ ... } }).slider("slide");
$("sliderSelector").slider({ slide: function(){ ... } }).trigger("slide");
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用命名函数而不是匿名函数,但我不认为这是一个解决方案,因为我可以使用我想要的任何参数调用函数,而触发slide事件将提供滑块设置的正确值.

Rob*_*nik 9

这是实际触发此类事件处理程序的结果代码:

var s = $("sliderSelector").slider({ slide: function(evt, ui){ ... } });
s.slider("option", "slide").call(s, null, { values: s.slider("values") });
Run Code Online (Sandbox Code Playgroud)

确保提供实际在事件处理程序中使用的函数参数.在我使用范围滑块的情况下,我需要ui.values参数,所以我创建了这样一个对象,所以我的处理程序不会破坏.

这不是一个很好的解决方案,因为我必须.slider()多次调用函数,但它是防止使用魔法值的最安全的方法.