jQuery Javascript传递父对象

时间:2011-12-18 19:09:05

标签: javascript jquery object closures

我想将当前调用的对象与当前设置的参数一起传递给闭包函数。我不确定如何做到这一点,但后来我认为jQuery增加了另一层混乱,因为这引用了一个元素。

示例:

jQuery插件

(function( $ ){
  $.fn.addContentType = function(obj) {
    var name = "this is just an example";
    obj.func.call(this); //<--I want to pass this object, not the jQuery selector   
  };
})( jQuery );

调用插件

jQuery("#someelement").addContentType({
  func:function(){
    console.log(this.name); //<--Expect "this is just an example"
  }
});

任何想法如何做到这一点?

这只是一个例子而且没有做任何事情,我只是想表明我追求的是什么。如果我遗漏了细节,请告诉我。

3 个答案:

答案 0 :(得分:1)

您可以使用.apply()传递原始函数调用中的上下文和参数:

obj.func.apply(this, arguments);
.apply()的{​​{3}}和arguments对象的MDN reference

答案 1 :(得分:1)

要访问name作为jQuery对象的属性,您需要添加它而不是使用变量。

this.name = "this is just an example";
obj.func.call(this);

或者使用变量将值传递给函数:

var name = "this is just an example";
obj.func.call(this, name);

并在另一端接收:

func:function( name ){
   console.log( name ); //<--Expect "this is just an example"
}

或者要使obj成为this值,请执行以下操作:

obj.func.call(obj, name);

...但除非您将值作为属性分配给obj,否则仍需要传递参数。

答案 2 :(得分:0)

你可以从jQuery选择器中获取DOM元素:

$("#elem").get(0);

$("#elem")[0];

Read this了解详细信息(如果需要)