$ .slider()的参数对象的属性引用另一个属性时出错

时间:2015-09-18 17:20:50

标签: javascript jquery jquery-ui

我正在尝试使用以下jQuery代码创建两个句柄滑块:

      $( "#slider" ).slider({
          min : 0,
          max : 100,
          values : [ 20 , 80],
          slideLower : function(event, ui){
               $('#lower-cut-off').val( ui.values[0] + "%");
          },
          slide: function (event, ui) {
             slideLower(event, ui);
          }
      });    

当我尝试滑动手柄时,调试器显示抛出了引用错误,说明slideLower未定义。

所以我的问题是为什么我不能从slide()中引用slideLower(),如果它们都是同一个对象的属性?这与jQuery slider()如何处理参数对象有关吗?

我尝试制作this.slideLower(event, ui),但后来我

  

TypeError:this.slideLower不是函数

我通过在幻灯片中内联slideLower()来修复它,但我仍然想了解为什么初始化不起作用。

我的假设是,slider()可能会将指定的属性(如max minslide)分配给另一个实体,而忽略其余的实体。这是正在发生的事情还是我没有正确使用javascript范围?

1 个答案:

答案 0 :(得分:0)

仅仅因为函数存储在对象属性中并不意味着它将与对象一起执行它的上下文。对于像这样的事件处理程序来说,将事件作为上下文触发的元素实际上很常见。

说,即使它是以对象作为上下文执行的,slideLower仍然不会在那里定义,因为它是一个对象的属性,你必须使用{这样访问它{1}}。但是,既然情况并非如此,那么除了使用名称定义函数,然后将其传递给选项对象之外别无选择。

this.slideLower