2013-02-25 4 views
0

여기 정말 고민 중입니다. nifty evenIfHidden 플러그인을 사용하고 있으며 너비 또는 높이 값을 제대로 반환하는 콜백을 기대하는 jQuery 함수에서 올바르게 작동합니다. 하지만 그 값을 할당하기 만하면 jQuery 객체를 얻습니다. 정말 짜증납니다.변수에 콜백 반환 값 지정

이 완벽하게 작동합니다 :

$(this).text($(this).evenIfHidden(function(e) { 
             return e.width(); 
            }) 
); 

이 그렇지 않은 : 그것은 내가 원하지 무엇을하는 jQuery 오브젝트를 할당

var width = $(this).evenIfHidden(function(e) { 
             return e.width(); 
           }); 

대신 e.width을 할당() width에.

답변

3

플러그인은 아무 것도 반환하지 않으며 클로저를 통해 콜백 내에서 할당 될 로컬 변수를 선언합니다.

var width = ""; 
$(this).evenIfHidden(function(e){ 
    width = e.width(); 
}); 
+0

당신이 있는지 있습니까'evenIfHidden' 동 기적으로 작동 ? – Hubro

+1

효과가있었습니다! 정말 고마워! JavaScript는 실제로 신비한 방식으로 작동합니다. 그래서 함수로 돌아 오는 대신 할당해야합니다. 얼마나 정교합니다. – silkfire

+0

@silkfire 기쁜 마음으로 도와 드리겠습니다. –

2

이것은 불가능합니다. evenIfHidden 함수가 값을 반환하지 않으면 할 수있는 일이 많지 않습니다. 대신이 값을 사용할 수있는 유일한 장소이기 때문에 콜백 내부에서이 값을 사용해야합니다. 외부로 흘리지 말아야합니다. 대신 당신은 콜백 내에서 사용할 수있는 evenIfHidden 함수에 반환 값으로 전달하는 노력의이 폭 몇 가지 작업을 수행하기를 원한다면 그래서 예를 들면 :

$(this).text(
    $(this).evenIfHidden(function(e) { 
     var width = e.width(); 
     // do something with the width here, for example you could pass it to some other function 
     someFunction(width); 
     return width; 
    }) 
);