2011-01-25 25 views
6

Mã đơn giản dưới đây mô tả câu hỏi của tôi (ít nhất tôi hopse như vậy):thoại Kế thừa từ jQuery UI và gọi phương thức ghi đè

$.widget("ui.mydialog", $.ui.dialog, { 
    _create: function() { 
    // How to call _create method of dialog? 
    } 
}); 

Tôi cố gắng để gọi $.ui.dialog.prototype._create() từ bên trong bên trên tạo ra phương pháp, nhưng nhận được dưới đây lỗi trong Firebug:

this.element is undefined 
this.originalTitle = this.element.attr('title'); 
jquery...5667348 (line 5864) 

Tôi có thể gọi phương thức "siêu" khác như thế nào?

jQuery UI phiên bản 1.8.8

Trả lời

11

Tôi đoán tôi chỉ tìm thấy một giải pháp ... $.ui.dialog.prototype._create.call(this);

Mã đầy đủ:

$.widget("ui.ajaxdialog", $.ui.dialog, { 
    _create: function() { 
    // Your code before calling the overridden method. 
    $.ui.dialog.prototype._create.call(this); 
    // Your code after calling the overridden method. 
    } 
}); 
+6

Đối jQueryUI 1.9x bạn chỉ có thể làm: 'này ._super ('_ create'); 'giải pháp trên cũng vẫn hợp lệ. – earcam

+2

Thú vị. Hàm 'this._super()' trong '_create' đơn giản cũng sẽ làm. Sau đó, nó là vấn đề của hương vị có lẽ. – Saulius

+1

Trên thực tế, theo các tài liệu (http://api.jqueryui.com/jQuery.widget/#method-_super), _super không có bất kỳ đối số nào. Nó chỉ kỳ diệu biết bạn đang ở đâu. – Grinn

Các vấn đề liên quan