jQuery UI选项与方法

3
什么是jQuery UI小部件选项和方法之间的语义差异?
使用定义值选项的选项对象初始化滑块小部件。
$('#mySlider').slider({ value: 10});

获取选项值。
var optValue = $('#mySlider').slider('option', 'value');

获取值。
var methodValue = $('#mySlider').slider('value');

optValue和methodValue可以不同吗?


这完全取决于插件的编写方式。我想答案是,不同之处在于插件的作者认为有哪些区别。 - Liam
滑块API文档没有区分,但我可以编写代码,根据使用方法或选项的不同而表现出不同的行为。 - gravidThoughts
@Liam 这样做可能不够理想,对吗?框架API应该在语义上提供清晰和一致性。 - gravidThoughts
你可以随时自己调试脚本,因为它没有编译。请记住,这些插件大多数(如果不是全部)都是由一组志愿者维护的开源项目,他们并没有得到报酬。有些插件有非常好的文档,而有些则没有。"你付钱,就要承担风险"。 - Liam
1个回答

1
简短的回答是,option 只是调用了底层的 get/set,语义上没有区别。
关于小部件方法:当您调用 $(element).widget("someMethod", parameters) 时,发生的是(为了回答问题)对 widgetPrototype.someMethod(parameters) 的调用。 widget.("option", property) 是小部件方法的特殊情况。作为 getter,它直接进入底层的 options 对象,但作为 setter 则调用 widget._setOptions() 函数。根据文档:

option( options )

返回值:jQuery(仅限插件)

设置小部件的一个或多个选项。

options 类型:Object 一个映射选项-值对。

以下是发生的情况的详细说明:
$('#mySlider').slider({ value: 10});
// call the slider widget's initialiser with parameter {value:10}

var optValue = $('#mySlider').slider('option', 'value');
// call the slider widget's .option() method with parameter value

var methodValue = $('#mySlider').slider('value');
// calls the slider widget's .value() method.
//
// EDIT: Yes, this CAN be different from .option(value)
// It falls on the implementer to document their widget well
// enough that users know what's going on
//
// Having said that, I have yet to see a popular jquery widget
// where .someWidgetOption() is not just a shortcut to .option("someWidgetOption")

这份文档非常好:http://api.jqueryui.com/jQuery.widget/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接