2010-02-07 3 views
1

난 당신이JQuery와 .CSS() 문제 ... 도움

$(document).ready(function(){ 
    //Dynamically size wrapper div based on image dimensions 
    $("#tag-wrapper").css({width: $("#show_img").outerWidth(), height: $("#show_img").outerHeight()}); 

    //Append #tag-target content and #tag-input content 
    $("#tag-wrapper").append('<div id="tag-target"></div><div id="tag-input"></div>'); 

아이디어 페이지가로드 될 때 CSS 속성은 즉시 적용해야한다는 것입니다에 대한 이러한 코드는 단지 시작 부분을 입력해야 바랍니다. 하지만 ... 페이지에 처음 들어가면 작동하지 않는 페이지를 새로 고칠 때 작동하지 않습니다. 어떤 생각을 어떻게 고칠 수 있습니까?

+0

당신은 이것을 위해 jquery를 사용할 필요가 없습니다. CSS로 수행 될 수 있습니다. – antpaw

+3

아마도 이미지가로드되기 전에 jquery 코드가 실행되어 브라우저가 크기가 아직 무엇인지 알 수 없습니다. – Pointy

+0

antpaw, 나는 css directlt를 외부 너비와 외부 높이가 미리 알 수 없기 때문에 사용할 수 없다. 이것은 사진의 작은 태그입니다. 그래서 당신은 미리 사진의 어떤 크기가로드되어 있는지 모릅니다. –

답변

1

show_img의 너비와 높이가 설정된 경우 코드가 작동합니다. DOM이로드 될 때와 페이지 내용 앞에 $ (document) .ready가 호출되기 때문에 이것이 작동하지 않는 이유가 있다고 생각합니다. 그래서 그 시점에서 show_img은 아직로드되지 않았으므로 명시 적으로 설정하지 않으면 너비와 높이를 가져올 수 없습니다.

+0

이미지가 매우 다르기 때문에 나는 이미지의 너비와 높이를 고정시킬 수 없습니다. 최대 값에 한계가있을 수 있지만 고정되어 있지 않습니다. 먼저 답을 시도합니다 –

+0

힌트를 보내 주셔서 감사합니다. PHP로 이미지 크기를 가지고 dinamically 설정했습니다. 이제는 작동 중임 –

1

이미지는 당신이 폭과 높이를 취하려고 할 때 아마로드되지 않습니다, 그래서 당신은 실행하기 전에 모든 이미지가로드되는 것을 보장 할 문서의 load event에 함수를 바인드해야합니다 :

$(document).load(function() { 
    $('#tag-wrapper').css({ 
     width: $('#show_img').outerWidth(), 
     height: $('#show_img').outerHeight() 
    }).append('<div id="tag-target"></div><div id="tag-input"></div>'); 
}); 
+0

이미지가 이미 문서 준비 상태로로드되어있어 두 번째 페이지가로드 될 가능성이 높습니다. 대신에 모든 이미지 *가 포함 된 문서 *가로드 될 때 실행되는 문서에서 '로드'에 바인딩 할 수 있습니다. – bobince

+0

@bobince, 좋은 지적. 내 대답을 업데이트했습니다. –

+0

Tatu이 코드가 작동하지 않습니다 .... –