jQuery UI 小部件覆盖方法

标签 jquery jquery-ui jquery-ui-widget-factory

我正在尝试编写一个小部件,允许我的代码的用户覆盖事件。

这是jsfiddle我正在尝试做的事情。

代码:

<div>Place Holder</div>​

(function ($) {
    $.widget("ui.mywidget", {
        options: {

        },
        _create: function () {

        },
        myevent: function () {
            alert('test1');
        }
    });

    $('#placeHolder').mywidget({
        myevent: function () {
            alert('test2');
        }            
    });

    $('#placeHolder').mywidget('myevent');

})(jQuery);​

$('#placeHolder').mywidget('myevent');结果是显示“test1”的警报,但应该显示“test2”。我以为事情就这么简单。我在这里缺少什么?

最佳答案

这是一个很老的问题,但其他人可能也有同样的问题。

正如评论中所述,您可以将默认事件处理函数定义为可以轻松覆盖的选项:

$.widget("ui.mywidget", {

    // Default option
    options: {
        'myevent': function() {
            alert('test1');
        }
    },

    // Public 'myevent' function
    myevent: function() {
        if($.isFunction(this.options.myevent))
            this.options.myevent();
    }
});

// Override the default 'myevent' option
$('#placeHolder').mywidget({
    myevent: function() {
        alert('test2');
    }            
});

$('#placeHolder').mywidget('myevent');

我更新了您的 jsFiddle 来说明它。

关于jQuery UI 小部件覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406399/

相关文章:

jquery - Twitter Bootstrap 主题滚轮

javascript - 如何将 _trigger 上的数据用于自定义小部件?

javascript - Yii,通过ajax更新列表,无法理解它是如何工作的;

javascript - 使动画函数在执行 $.ajax 调用时起作用

javascript - 如何使用 Jquery 定位父级 sibling 的子级的单个实例?

javascript - 内联简单幻灯片 jQuery/UI 图像

javascript - _destroy() 还是 destroy()?

jquery-ui - 如何使用 jquery-ui selectmenu 扩展方法(_renderItem、_renderMenu 等)

javascript - 保持当前节点打开并折叠 GetOrgChart 中的其他节点

javascript - 解析错误 : syntax error, unexpected '(' expecting variable (T_VARIABLE) or '$'