실제로 jquery를 사용하여 웹 페이지의 이미지 높이를 얻는 것은 매우 간단합니다.
$("img").whith(); (순수한 숫자 반환)
$("img").css("width "); (문자열 반환 : 숫자 "px")
그런데 가끔 0을 반환하는 상황에 직면하게 됩니다. 위 메소드의 반환 값은 실제로 0 또는 0px인데, 이는 매우 놀랍습니다.
방법 1
오래 전에 저는 이 솔루션을 사용했는데, 이는 제 스승님이 저에게 말씀하신 솔루션이기도 합니다.
가져오려면 이미지 태그를 가져오거나 CSS에 이미지 설명을 작성하면 됩니다. 따라서 이미지 높이를 얻으려면 항상 이미지 높이를 먼저 측정한 다음 작성해야 합니다. 웹페이지에 접속하면 끝인데, 많이 어색하지 않나요? 두 번째 방법을 살펴보겠습니다.
방법 2
최근에 Learning jQuery의 영문 원본을 읽고 있었는데, 번역과 읽기를 동시에 했기 때문에 한 페이지 한 페이지 꼼꼼히 읽어봤습니다. 그래서 드디어 잘 읽어보고, 자주 사용되는 jquery 이벤트 로딩 방법 두 가지
$(function(){});
window.onload=function(){}
첫 번째는 DOM 구조 렌더링 후에 호출됩니다. 이때 웹페이지에 사진이나 기타 리소스 등 일부 리소스가 로드되지 않았지만 DOM 구조는 성공적으로 렌더링되었습니다.
웹페이지의 DOM 구조가 호출된 후 두 번째입니다. 렌더링되었으며 리소스가 성공적으로 로드되었습니다.
차이점을 느끼시나요? 하나는 리소스가 로드되지 않았을 때 호출되고, 다른 하나는 리소스 로드가 완료되고 페이지가 렌더링된 후에 호출되므로 $(function() {} ) $('img').width() 호출 시 이미지가 로드되지 않았으므로 이때
태그의 높이가 0이므로 반환 값은 0입니다. 하지만 window.onload=function(){}으로 호출하면 이미지가 이미 로드되어 있으므로 이때 이미지의 높이를 가져올 수 있습니다.
따라서 DOM 렌더링이 완료되고 리소스가 로드되지 않은 경우 $(function(){})이 실행된다는 점을 기억하세요. 리소스 정보를 얻으려면 현재로서는 방법이 없습니다.