2010-01-10 1 views
0

특정 클래스의 모든 요소에서 실행하려는 간단한 함수가 있습니다. 이 함수는 DOM이로드되는 즉시 실행되기를 원합니다. 이벤트 처리기가 아닙니다.DOM을로드하자 마자 이벤트 핸들러를 사용하지 않고 특정 클래스가있는 요소에서 함수를 실행하십시오.

아래는 hover와 같은 이벤트 처리기에서 실행되는 코드입니다. DOM을로드하자마자 실행되도록하려면 어떻게해야합니까?

$(document).ready(function(){ 
    var displayname = $(".displayname"); 

    function alignSpans(){ 
     var spanheight = this.offsetHeight; 
     var cssbottom = spanheight + "px"; 
     this.style.bottom = cssbottom; 
    } 

    displayname.hover(alignSpans); 

}); 

displayname.alignSpans(); 작동하지 않습니다

답변

2

는 jQuery를 객체가 displayname입니다 가정하면 이벤트 핸들러와 같은 규칙이 매우 편리하다 (포함 된 DOM 요소로 this를 사용하여 콜백 함수를 호출 할 .each()을 사용할 수 있습니다)

displayname.each(alignSpans); 
+0

gnarf의 대답은 가장 간단하다. 'displayname.alignSpans(); '형식으로 작업하려면'alignSpans' 함수를 jQuery 플러그인으로 생성해야합니다. 즉,'$ .fn'에 속성으로 추가해야합니다. –

1

이것이 바로 .each() 기능입니다. 나는 당신의 코드를 조금 더 효율적으로 만들었다 :

$(document).ready(function(){ 
    $(".displayname").each(function() { 
     $(this).css("bottom", $(this).height()); 
    }); 
}); 
+0

jQuery는 실제로'$ (this) .height()'를 넘겨 주면 자동으로'px'를 추가 할 것입니다. – gnarf

+0

알아두면 좋을 것 같습니다. 나는 그것을 꺼내었다 (깔끔한 코드는 훨씬 더 좋다 ...) – Ariel

관련 문제