【问题标题】:Trigger an event when a configuration option in a jQuery plugin is changed? Option or public method?更改 jQuery 插件中的配置选项时触发事件?选项还是公共方法?
【发布时间】:2011-08-04 12:43:23
【问题描述】:

我正在开发用于平滑滚动的 jQuery 插件的下一个版本 (Smooth Div Scroll)。这是一个基于 jQuery 小部件工厂的有状态插件,因此插件的状态可以在插件初始化后更改。用户可以更改插件的配置选项,也可以使用我提供的公共方法之一。

在这个插件中,我有一个布尔选项:hotSpotScrolling (true/false)。如果用户将此选项设置为 true 作为插件初始化时提供的选项的一部分,则会激活滚动热点。反之亦然 - 如果设置为 false,则停用。

如果用户在插件初始化后更改此选项,我需要插件来响应此更改。因此,如果用户将 hotSpotScrolling 设置为 false,我需要隐藏热点并停用与热点滚动相关的其他一些内容。反之亦然,如果用户将 hotSpotScrolling 设置为 true,我需要显示热点并激活其他内容。

但据我所知,没有办法让 jQuery 插件响应我刚才描述的场景中的选项更改,我什至不确定它是否可取。对我来说,这听起来更像是公共方法的任务?因此,用户不会更改选项,而是调用公共方法,并在此方法中编写更改插件状态的代码。

在 jQuery 插件中选择更改选项和调用公共方法时,我对最佳实践感兴趣,最好是一些很好的示例,其中的代码可以阐明这种困境。

提前致谢! /托马斯

【问题讨论】:

    标签: jquery jquery-plugins options jquery-widgets


    【解决方案1】:

    查看更新后的标签小部件如何处理初始化后更改的选项:

    https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.tabs.js#L113-140

    更新后的手风琴做同样的事情:

    https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.accordion.js#L157-191

    这就是你想要做的。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多