如何使用jQuery将对象引用传递给函数?

时间:2011-04-12 22:14:34

标签: javascript jquery

我有几个链接都使用类似的功能,所以我想调用该函数并从进行调用的对象传递它的属性。我该怎么做呢?

这是我的代码:

$('.flash').click(function(){
    getDimensions($(this));
    swfobject.embedSWF(fileRef, "myContent", fileWidth, fileHeight, "9.0.0");
});

function getDimensions(linkRef){
    fileHeight = $(linkRef).attr('data-height');
    fileWidth = $(linkRef).attr('data-width');
}

我是否只是不恰当地引用$(this)

3 个答案:

答案 0 :(得分:6)

$('.flash').click(function(){
    var dimensions = getDimensions($(this));
    swfobject.embedSWF(fileRef, "myContent", dimensions.fileWidth, dimensions.fileHeight, "9.0.0");
});


function getDimensions(linkRef){
  return { 
    fileHeight: $(linkRef).attr('data-height'),
     fileWidth: $(linkRef).attr('data-width')
  }
}

答案 1 :(得分:1)

如果没有全局变量,则可以返回JSON对象:

$('.flash').click(function(){
   var d = getDimensions($(this));
   swfobject.embedSWF(fileRef, "myContent", d.width, d.height, "9.0.0"); }
);

function getDimensions(linkRef){
   return { "height" : $(linkRef).attr('data-height'),
            "width"  : $(linkRef).attr('data-width') }
}

答案 2 :(得分:0)

由于您已经将jQuery对象传递给getDimensions函数,因此您无需将参数linkRef包装在getDimensions函数内的另一个$()函数中。

请改用:

function getDimensions(linkRef){
    fileHeight = linkRef.attr('data-height');
    fileWidth = linkRef.attr('data-width');
}