jQuery UI滑块初始化

时间:2011-07-05 01:53:36

标签: jquery jquery-ui

我在页面上有多个滑块,每个滑块都带有“滑块”类,每个滑块都带有一个复选框。加载页面时,复选框将通过PHP填充为已选中或未选中。基于此,我想启用或禁用滑块。

删除不相关的部分,我有:

$(".slider").slider({
        ...
        disabled: function()
        {
            var $field = $(this).prevAll("input");
            return $field.is(':checked');
        },
        ...
});

我甚至不确定是否可以将匿名函数传递给禁用选项。这是合法的吗?它似乎没有起作用......

当然我可以单独初始化#slider1,#slider2,#slider3等等,但我正在寻找最优雅,最紧凑的解决方案。

是否$(这个)已超出范围,因为它在选项内?在这些情况下javascript如何工作?如果没有...我知道$(this).prevAll(“input”)选择器是准确的,因为我已经用Firebug检查了它。

思考?谢谢!

1 个答案:

答案 0 :(得分:2)

  

我甚至不确定是否可能   将匿名函数传递给   禁用选项。这是合法的吗?

不。您不能将函数引用作为参数传递给该选项。

您可以立即执行该匿名函数,但this的值将是错误的:

$(".slider").slider({
        ...
        disabled: (function()
        {
            var $field = $(this).prevAll("input");
            return $field.is(':checked');
        })(),
        ...
});

作为一种解决方法,您可以将代码包装在.each()块中:

$(".slider").each(function () {
    var $this = $(this);
    var disabled = $this.prevAll("input").is(":checked");
    $(this).slider({
        ...
        disabled: disabled
        ...
    });
});