我正在制作下一个版本的jQuery插件,用于平滑滚动(平滑div滚动)。这是一个基于jQuery小部件工厂的有状态插件,因此可以在插件初始化后改变插件的状态。用户可以修改插件的配置选项,也可以使用我提供的公共方法。
在这个插件,我有一个选项,是一个布尔值:hotSpotScrolling (true/false)。如果用户将此选项设置为true,作为插件初始化时提供的选项的一部分,则激活用于滚动的热点。反之亦然——如果设置为false则不激活。
如果用户在插件初始化之后更改了这个选项,我需要插件响应这个更改。如果用户将hotSpotScrolling设置为false,我需要隐藏热点并停用与热点滚动相关的其他东西。反之亦然,如果用户将hotSpotScrolling设置为true,则需要显示热点并激活其他一些东西。
但据我所知,没有办法使jQuery插件响应选项的变化沿着我刚才描述的场景,我甚至不确定这是可取的。对我来说,这听起来更像是公共方法的任务。因此,用户不需要修改选项,而是调用一个公共方法,在这个方法中,我编写了改变插件状态的代码。
我对最佳实践很感兴趣,当它涉及到在jQuery插件中改变选项和调用公共方法之间进行选择时,最好是一些很好的示例,这些示例的代码揭示了这个困境。
查看更新后的tabs小部件如何处理初始化后更改的选项:
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.tabs.js l113 - 140
更新后的accordion做同样的事情:
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.accordion.js l157 - 191