2010-02-23 6 views
0

기본적으로 내 웹 페이지의 body 태그에 JQuery 변수를 지정하고 내 head 태그의 함수를 읽어야합니다.<body> 태그의 jQuery 액세스 변수?

<script type="text/javascript"> 
$.noConflict(); 

jQuery(document).ready(function($) { 

$('a.paymentAdd').click(function(){ 

alert ("rowCount 1 = " + rowCount); 

    rowCount++; 

}); 
}); 

</script> 

그리고이 내 몸 태그 : 이것은 (간체) 내 머리 태그 기능입니다

<script type="text/javascript"> 

     jQuery(document).ready(function($) { 
     var rowCount = 3; 
     alert ("rowCount 2 = " + rowCount); 
     }); 

    </script> 

(나는 그것이 PHP에 의해 생성되기 때문에 내 몸 태그에 변수를 지정해야 이는 내 템플릿의 일부에서만 사용할 수 있습니다.)

페이지가로드 내가 경고를 얻을

"를 rowCount 2 = 3") (올바른

내가 클래스와 링크를 클릭

"paymentAdd는"나는 t 얻을 그는 (incorrect- 3를 기대?) "= rowCount의 1 정의되지 않은"경고

답변

2

어떤 document.ready 기능의 외부 전역 범위에서 변수를 선언 :

var rowCount = 0; 
jQuery(document).ready(function($) { 
    rowCount = 3; 
    alert ("rowCount 2 = " + rowCount); 
}); 
1

당신은 함수 내 지역으로 변수를 선언, 그래서 그것 밖에 존재하지 않습니다. 간단한 해결책은 글로벌로 선언하는 것입니다, 그것은 나중을 위해 살아남을 것입니다 :

<script type="text/javascript"> 

    var rowCount = 3; 

    jQuery(document).ready(function($) { 
    alert ("rowCount 2 = " + rowCount); 
    }); 

</script> 

그러나, 전 세계적으로 변수를 선언하는 것은 항상 갈등의 잠재적 인 위험이다. 페이지에 서로 다른 전역 변수 집합을 선언하는 다른 스크립트가있는 경우 동일한 변수 이름을 사용하면 함께 작동하지 않습니다.

alert("rowCount2 = " + listData.rowCount); 
: 그런 다음 속성에 액세스 할 수 있습니다

var listData = { 
    rowCount: 3, 
    currentRow: null, 
    sorting: 'Name' 
} 

: 당신은 당신이 세계에 액세스 할 필요가 같은 여러 변수가있는 경우 네임 스페이스와 같은 단일 전역 객체를 생성하고 속성으로 넣어 할 수 있습니다

물론 스크립트간에 충돌이 발생할 수 있지만 전역 변수가 많은 경우보다 단일 전역 개체가 훨씬 적습니다.