2011-04-12 4 views
3

나는 비슷한 함수를 사용하는 여러 개의 링크를 가지고 있으므로 함수를 호출하고 호출 한 객체에서 속성을 전달하려고합니다. 어떻게해야합니까?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)를 참조하는 건가요 :

이 내 코드?

이미 getDimensions 기능에 jQuery를 객체를 전달하고 있기 때문에
$('.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') } 
} 
+0

, 무엇을 작동하지? 작동해야하는 것 같습니다. – Jon

+0

어떻게 전역 변수없이 작성 하시겠습니까? 그게 사실 내 문제라고 생각해. 나는 fileWidth와 fileHeight를 반환하고 나머지 클릭 기능을 수행하는 함수가 필요하다. – mheavers

답변

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') 
    } 
} 
+0

@mheavers :이 작업을 수행 했는가? 나는 당신이 이미 getDimensions에 JQuery 객체를 전달하고 있고 또 다른 $() 함수로 다시 포장하기 때문에 이것이 작동 할 것이라고 생각하지 않는다. 내 대답을 보라. – euphoria83

+0

@ euphoria83 : jQuery에서이 작업을 수행 할 수 있습니다. jQuery 객체를 $()에 전달하면 원래 세트가 반환됩니다. $ ($ (this)) == $ (this); –

1

, 당신은 JSON 객체를 반환 할 수 있습니다 $()은 getDimensions 함수 내에서 작동합니다.

사용이 대신 : (! 나쁜) 두 가지 기능을 사용하여 전역을 전달한다는 사실을 제외하고

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

이것은 매우 도움이됩니다. 왜 이것이 폴 알렉산더가 제안한 방식보다 더 나은지 설명 할 수 있습니까? – mheavers

+0

@mheavers 나는 paul 알렉산더가 제안한 것과 같은 대답이라고 생각하며, 거의 동시에 게시 함) – Dave

+0

@mheavers : "높이"와 "너비"가 이름이기 때문에 어쩌면 조금 더 생각할 수 있습니다. 어떤 vars의 이름이 아닌 속성의 값 – Dave

0

, 다른에,의 LinkRef를 인수 포장 할 필요가 없습니다 : 전역없이

+0

다시 포장 할 필요가없는 것은 사실이지만, 그렇게하는 것이 좋습니다. jQuery 객체를 $()에 전달하면 원래 세트가 반환됩니다. $ ($ (this)) == $ (this); jQuery 세트를 항상 다루도록하기 위해 들어오는 매개 변수를 $()에 랩핑하는 것이 일반적입니다. –

관련 문제