【发布时间】:2013-02-18 17:59:58
【问题描述】:
在使用某个滑动函数初始化滑块后,我想覆盖/覆盖 jQuery UI 滑块的滑动方法。
相关代码如下所示,JSFiddle:
$(function() {
var myslider = $("#myslider");
$( myslider ).slider({
slide: function( event, ui ) {
console.log("sliding AAAAA");
} //end slide function
});//end slider definition
//how do I unbind the original slide action?
$(myslider).off("slide"); //doesn't work
$(myslider).unbind("slide"); //doesn't work
$(myslider).on("slide", function( event, ui ) {
//I want this to be the only action fired.
console.log("sliding BBBBB");
});
});
在上面的示例/小提琴中,当用户滑动滑块时,这两个动作仍在触发。我怎样才能使它只有第二个 slide 方法被触发,从而覆盖第一个?
谢谢!
编辑
我不确定这是执行此操作的“正确”方式,但它似乎有效:
$(myslider).slider("option","slide","");
也许我应该输入这个作为我自己问题的答案?但我认为有更好的定义/设计的方式,所以我会保持开放。
【问题讨论】:
-
该方法已经设置好了,所以再次设置它只是添加到对象中。您可能必须销毁滑块并使用新的滑块参数初始化一个新滑块。
-
您可以安全地发布您的编辑作为答案。对于它的价值,根本原因是指定
slide选项实际上与绑定到slide事件不同(一个关键区别是绑定处理程序在当前实现中首先被调用)。神奇之处在于基本小部件的_trigger()方法。所以你必须清除选项来实现你想要的。 -
@FrédéricHamidi,感谢您的意见。