0

要素の「データ」として設定されたオブジェクトの関数内の要素を取得する方法はありますか? 何もない場合、これを実装するための代替方法は何ですか?

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);
4

2 に答える 2

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);
于 2012-07-21T04:17:26.260 に答える
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());

于 2012-07-21T04:18:22.853 に答える