如何使用jQuery将对象引用传递给函数?
我有几个链接都使用了类似的函数,所以我想调用该函数并从调用该对象的对象传递它的属性。我该怎么做呢?如何使用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)
不当?
$('.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')
}
}
@mheavers:做了这项工作?我不认为这会起作用,因为你已经将一个JQuery对象传递给了getDimensions,并且你又将它包装在另一个$()函数中。看到我的答案。 – euphoria83 2011-04-12 22:35:13
@ euphoria83:这在jQuery中完全没问题。如果您将jQuery对象传递给$(),它只会返回原始集合。 $($(this))== $(this); – 2011-04-12 22:37:01
没有全局变量,你可以返回一个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') }
}
既然你已经传递一个jQuery对象getDimensions功能,你不需要包装的说法,linkRef,在另一个函数getDimensions中的$()
函数。
使用这个代替:(!不好)
function getDimensions(linkRef){
fileHeight = linkRef.attr('data-height');
fileWidth = linkRef.attr('data-width');
}
虽然这是真的,但您不需要重新包装,这样做完全没问题。如果您将jQuery对象传递给$(),它只会返回原始集合。 $($(this))== $(this);将传入的参数包装到$()中以确保您始终处理jQuery集合很常见。 – 2011-04-12 22:38:50
除了这两个功能使用通讯全局的事实,什么是不工作?它看起来应该起作用。 – Jon 2011-04-12 22:17:53
你会怎么写没有全局?我认为这是我的问题实际上 - 我需要该函数来返回fileWidth和fileHeight并执行其余的点击功能 – mheavers 2011-04-12 22:19:24