jquery – 从外部窗口小部件访问窗口小部件实例

前端之家收集整理的这篇文章主要介绍了jquery – 从外部窗口小部件访问窗口小部件实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个简单的widget mock:
(function ($) {

    $.widget("ui.myDummyWidget",{

        options: {
        },_create: function () {
        },hide: function () {
            this.element.hide();
        },_setOption: function (key,value) {
            $.Widget.prototype._setOption.apply(this,arguments);
        },destroy: function () {
            $.Widget.prototype.destroy.call(this);
        }

    });

} (jQuery));

它只添加一个方法隐藏,您可以调用它来隐藏元素。如果从小部件中完成,就很容易

this.hide();

但是常见的情况是您想从外部调用窗口小部件实例上的方法(Ajax更新或其他外部事件)

那么访问窗口小部件实例的最佳方法是什么?一种方法是将元素的引用添加到元素,丑陋的…

_create: function () {
    this.element[0].widget = this;
},

然后你可以从外面访问它

this.dummy = $("#dummy").myDummyWidget();
this.dummy[0].widget.hide();

解决方法

窗口小部件引擎已经做了你想要的:它在内部调用 data()来关联窗口小部件及其各自的元素:
$("#dummy").myDummyWidget();
// Get associated widget.
var widget = $("#dummy").data("myDummyWidget");
// The following is equivalent to $("#dummy").myDummyWidget("hide")
widget.hide();

更新:从jQuery UI 1.9起,the key becomes the widget’s fully qualified name,with dashes instead of dots.因此,上面的代码变成:

// Get associated widget.
var widget = $("#dummy").data("ui-myDummyWidget");

在1.9中仍然支持使用不合格的名称,但已被弃用,支持将在1.10中删除

原文链接:https://www.f2er.com/jquery/182304.html

猜你在找的jQuery相关文章