我在页面上有多个滑块,每个滑块都带有“滑块”类,每个滑块都带有一个复选框。加载页面时,复选框将通过PHP填充为已选中或未选中。基于此,我想启用或禁用滑块。
删除不相关的部分,我有:
$(".slider").slider({
...
disabled: function()
{
var $field = $(this).prevAll("input");
return $field.is(':checked');
},
...
});
我甚至不确定是否可以将匿名函数传递给禁用选项。这是合法的吗?它似乎没有起作用......
当然我可以单独初始化#slider1,#slider2,#slider3等等,但我正在寻找最优雅,最紧凑的解决方案。
是否$(这个)已超出范围,因为它在选项内?在这些情况下javascript如何工作?如果没有...我知道$(this).prevAll(“input”)选择器是准确的,因为我已经用Firebug检查了它。
思考?谢谢!
答案 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
...
});
});