【问题标题】:Unbind Slide Method from jQuery UI Slider从 jQuery UI Slider 中取消绑定 Slide 方法
【发布时间】: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,感谢您的意见。

标签: jquery jquery-ui slider


【解决方案1】:

这是我自己的问题的最佳答案:

$(myslider).slider("option","slide",""); //clear the slide option

如果有更好、更简洁或更“jQuery”的方法,请发布。

编辑

或者,正如@FrédéricHamidi 的评论所建议的,将slide 选项设置为null(而不是空字符串)。两者都会达到覆盖现有slide函数的效果。

$(myslider).slider("option","slide",null); //clear the slide option

【讨论】:

  • 既然你提到了它,我可能会将选项设置为null 而不是空字符串,但这是边缘挑剔。好吧,除非您问题中代码的第一部分在您的控制之下,否则您可以省略 slide 选项,您可能一开始就不会问这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多