2012-08-01 4 views
0

페이지의 DOM 요소를 수정하는 함수가 있지만 $(document).ready()도 동일한 DOM 요소에 액세스하는 경우 $(document).ready()의 함수를 포함하여 모든 것을 래핑합니까? 나는 dom 요소를 여러 번 선언하지 않습니다. 예를 들어 내가 한 번만 $someElement를 선언 할 수 있도록

function addContent(){ 
    var $someElement = $("someElement"); 
    //Do something with $someElement 
} 
$(document).ready(function(){ 
    var $someElement = $("someElement"); 
    $someElement.click(function(){ //some code }); 
}) 

은 내가 $(document).ready() 사이의 addContent() 기능을 이동겠습니까?

답변

1

addContent()은 전체 범위에서 필요하면 $(document).ready(function(){}) 외부에 있어야합니다. 선택기에서도 마찬가지입니다.

가능한 경우 전역 범위에서 개인적으로 아무 것도 아니기 때문에 아무런 의미가 없습니다. 즉 onclick= 속성을 의미합니다.

+0

사실, 다음과 같은 방법으로 전역으로 설정할 수 있습니다. 'var foo' 대신'window.foo'를 사용하십시오. jQuery를 사용할 때'$ (document) .ready()'에서 모든 것을 래핑하기 때문에 보통 그렇게합니다. –

0

기본적으로, 이렇게하면 함수를 호출하는 모든 것이 $(document).ready() 내에 있어야하므로 위쪽과 아래쪽이 있습니다. 당신에게 달려 있습니다. Kevin B가 말했듯이, 개인적으로는 어쨌든 그 범위 밖에서 개인적으로 숨어지기 때문에 내부에 넣을 수 있습니다.

0

당신은 (JQuery와 같은 saelector에 캐시 액세스를 시작했다 그것은 내 느낌입니다

$(document).ready(function(){}) 
0

외부에서 사용 적어도 우리가 캐시에있는 불평 중지 기능에 jQuery를 사용할 필요가없는 경우 그들 자신). $ (". some")를 여러 번 호출하는 것은 괜찮습니다. 반면에 클래스의 컨텍스트 내부에 있고 $ (". some")가 항상 동일한 객체 세트를 반환한다는 것을 알고 있다면 클래스 변수에 저장하는 것이 안전합니다. 그리고 글로벌 변수는 악의적 인 변수이기 때문에 하나의 변수에 저장하는 것은 좋지 않습니다.

0
// declared in global scope 
var $someElement = null; 

function addContent(){ 
    //Do something with $someElement 
    $someElement.html('works!'); 
} 

$(document).ready(function(){ 
    //initialized on ready 
    $someElement = $("someElement"); 
    $someElement.click(function(){ //some code }); 
}); 

당신은 변수가 세계적 범위 만들 수 있으며,이 .ready의 내부 값을 초기화합니다. 은 항상 화재 후 .ready 이후에 발생합니다. 문제가되지 않지만 jQuery로 dom을 조작하려고하므로 항상 안전한 가정입니다. .ready