2015-04-30 91 views
-2

我有一個對象叫Breadcrumb,它有一個函數expandEllipses。以下工作正常:在JQuery事件處理程序中調用原型對象方法

mbc = jQuery('#breadcrumb').breadcrumb({ 
    items : initItems 
}); 

jQuery("body").on("click", ".breadcrumb .breadcrumbEllipses", function(e) { 
    mbc.expandEllipses(); 
}); 

不過,我不知道怎麼跟我這樣做是一個jQuery的事件處理程序,我沒有目標就在那裏:

jQuery("body").on("click", ".breadcrumb .breadcrumbEllipses", function(e) { 
    parObj = <parent of the .breadcrumbEllipses instance that triggered this event> 
    protoObj = <Prototype object from parentObj> 
    protoObj.expandEllipses(); 
}); 

這是什麼最終從Barmar's回答工作:

jQuery.fn.breadcrumb = function(options) { 
    var bc = new Breadcrumb(this, options); 
    this.data('breadcrumb', bc); 
    return bc; 
}; 

jQuery("body").on("click", ".breadcrumb .breadcrumbEllipses", function(e) { 
    bcObj = jQuery(this).closest(".breadcrumb").data("breadcrumb"); 
    bcObj.expandEllipses(); 
}); 
+0

'$(本).parent()'? – Downgoat

回答

1

breadcrumb初始化,S AVE的Breadcrumb對象使用.data()

this.data('breadcrumb', self); 

然後你就可以在以後檢索元素:

jQuery("body").on("click", ".breadcrumb .breadcrumbEllipses", function(e) { 
    parObj = $(this).closest(".breadcrumb"); 
    protoObj = parObj.data("breadcrumb"); 
    protoObj.expandEllipses(); 
}); 
+0

這看起來很有希望!然而,我得到'Uncaught TypeError:this.data不是函數''var Breadcrumb = function(element,options){... this.data('breadcrumb',self); };' – Kristin

+0

我的代碼打算在'jQuery.fn.breadcrumb'中。當一個插件函數被調用時,'this'就是它被調用的jQuery對象。 – Barmar

+0

並用您在內部使用的任何變量替換'self'以容納'Breadcrumb'對象。 – Barmar

相關問題