2011-01-27 2 views
1

안녕 얘들 아. 그래서 JS에 대해 모르는 것이 진짜 어려운 질문입니다.jQuery에서 JavaScript 반환 값 사용

jQuery에서 이미지 크기를 조정할 수있는 JS 함수를 작성하려고합니다. 것은 JS 함수가 실행 된 후 다시 jQuery 값을 반환하는 방법을 모르겠다. 당신이 볼 수 있듯이, 내가 어떤 값을 먹이고 다시 new_width 및 new_height 얻으려고

$('a').click(function() { 
    var slideshowHeight = $(this).closest('.stage').css('height') 
    var slideshowWidth = $(this).closest('.stage').css('width') 
    var newImageHeight = $(this).attr('data-height') 
    var newImageWidth = $(this).attr('data-width') 

    fit_within_box(slideshowWidth, slideshowHeight, newImageWidth, newImageHeight); 

    $(this).children('img').css('width',new_width); 
    $(this).children('img').css('width',new_height); 
} 

function fit_within_box(box_width, box_height, width, height) 
{ 
    var new_width = width 
    var new_height = height 
    var aspect_ratio = parseInt(width)/parseInt(height) 

    if (new_width > box_width) 
    { 
     new_width = box_width 
     new_height = int(new_width/aspect_ratio) 
    } 

    if (new_height > box_height) 
    { 
     new_height = box_height 
     new_width = int(new_height * aspect_ratio) 
    } 
    return (new_width, new_height) 
} 

: 여기에 지금까지 가지고있는 것입니다.

도움 주셔서 감사합니다. 당신이 객체 리터럴와 함께 할 수있는 한 번에 두 값을 반환하려면

답변

0

이 같은 JSON 개체를 반환하는 시도 할 수 있습니다 :

return { 
    new_height:height, 
    new_width:width 
}; 

을 귀하의 jquery 함수에서 사용하십시오 :

var fit_img = fit_within_box(...); 
... 
$(this).children('img').css('height',fit_img.new_height); 
+1

이것은 JSON 객체가 아니라 객체 리터럴입니다. – alex

1

, ...

return { 
    width: new_width, 
    height: new_height 
}; 
+0

그래 좋은 생각이다. jQuery에서 어떻게 액세스 할 수 있습니까? 나는이 같은 추측 : 크기 조정 = fit_within_box (A, B, X, Y) resize.width resize.height 제대로 보이지 합니까? –

+0

'fit_within_box' 함수의 값은 어딘가에 캡쳐되어야합니다. OP의 코드에서 구문 오류에 대한 주석'return (1, 2, ..., n)'은'n'만을 반환하므로 OP는'new_height'를 함수에서 반환 된 값으로 만 씁니다. – jball

+0

@Drew Baker,'var' 키워드를 잊지 마세요. – jball

0

안녕하세요, 여기에 예제가 있습니다. 몇 가지 작은 실수를 수정했습니다. 당신은 children('img');

jQuery를 두 번 폭을 사용했습니다 : 일부 벽지

$(function(){ 
    $('a').click(function() { 
     var slideshowHeight=$(this).closest('.stage').height(); 
     var slideshowWidth=$(this).closest('.stage').width(); 
     var newImageHeight=$(this).attr('data-height'); 
     var newImageWidth=$(this).attr('data-width'); 
     var size=fit_within_box(slideshowWidth,slideshowHeight,newImageWidth,newImageHeight); 
     $(this).children('img').css({'width':size[0],'height':size[1]}); 
    }); 

    function fit_within_box(box_width,box_height,new_width,new_height){ 
     var aspect_ratio=new_width/new_height; 
     if(new_width>box_width){ 
      new_width=box_width; 
      new_height=Math.round(new_width/aspect_ratio); 
     } 
     if(new_height>box_height){ 
      new_height=box_height; 
      new_width=Math.round(new_height*aspect_ratio); 
     } 
     return [new_width,new_height]; 
    } 
}); 

HTML :

<div class="stage" style="width:200px;height:200px;"> 
<a href="#" data-width="1280" data-height="1024"><img src="wallpaper_1280x1024.jpg" /></a> 
</div> 

건배

G.는