2012-07-21 79 views
0

有没有办法让一个函数内的元素被设置为一个元素的'数据'的对象?如果没有,那么有什么替代方法可以实现呢?jQuery的 - 如何获取数据对象函数内的元素

var m = function(options){ 
    // Some initialization code here 
} 

m.prototype.doSomething: function() { 
    // How do i get the #an_element here? 
} 

$("#an_element").data('myObject', m); 

回答

0

最简单的方法是把它给给构造函数,你可以在jsfiddle上检查它。

var m = function(options){ 
    // Some initialization code here 
    $.extend(this, options); 
} 

m.prototype.doSomething= function() { 
    // How do i get the #an_element here? 
    var _this=this; 
    if(_this.el && _this.el.length){ 
     _this.el.css({color:"black"}); 
    } 
} 
$(function(){ 
    var $el=$("#an_element"); 
    $el.data('myobject', new m({el:$el})); 
    $el.click(function(){ 
     var nn=$(this).data("myobject"); 
     nn.doSomething(); 
     return false; 
    }); 
}); 

你做了什么,那就是你想投入到数据本身的功能,但你必须之前创建一个对象像这样的错误:$("#an_element").data('myObject', new m());

+0

我试图找到一种方法来避免必须将元素传递给构造函数。 – arvinsim 2012-07-22 04:33:18

0

我假设你在#an_element中存储了一个类或id,即选择器。试试这个:

var m = function(options){ 
    // Some initialization code here 
} 

m.prototype.doSomething: function() { 
    var selector = $("#an_element").data('myObject'); 
    var required_element = $(selector); 
} 

$("#an_element").data('myObject', m); 
+0

我不认为这会工作,如果选择器返回多个元素 – arvinsim 2012-07-22 04:32:22