2012-12-05 4 views
0

Ruby on Rails, jQuery v1.8.3 및 jQuery UI v1.9.2를 사용하고 있습니다.DOM이 일부 변수를 덮어 쓰는 변경 사항을 처리하는 방법은 무엇입니까?

<%= render :partial => 'template_name', :locals => { :div_id => 'div_id1' } %> 

관련 template_name 파일에는 다음이 포함 : 뷰 파일에서 나는 부분 템플릿이 방법으로 렌더링하고 같은 페이지에서

<script type="text/javascript"> 
    var item = $('#<%= div_id %>') 

    alert(item.selector) // Display #div_id1 
</script> 

, Ajax 요청을 통해를, 나는 검색 및 추가 DOM에 동일한 부분과 템플릿하지만 :locals => { :div_id => 'div_id2' } :

<script type="text/javascript"> 
    var item = $('#<%= div_id %>') 

    alert(item.selector) // Display #div_id2 
</script> 

번째 이후 상기 메이커 전자 AJAX 요청, 나는 #div_id1에 대한 참조를 "잃어"은 #div_id2과 관련이 있기 때문에.

"덮어 쓰기"변수를 피하려면 어떻게해야합니까? 변수를 "격리"(어쩌면 네임 스페이스 또는 일부 jQuery 기능 사용) 할 수 있습니까?

+4

실제 문제는 다음과 같습니다. 글로벌 변수 – apneadiving

+2

을 사용하고 있습니다. 클라이언트 측 JavaScript와 서버 측 출력을 혼합하지 않으려 고합니다. –

+0

@apneadiving - 변수를 로컬 변수로 만들려면 어떻게해야합니까? – user12882

답변

0

코드 스 니펫이 자체 포함 된 경우 코드를 개인 범위로 옮길 수 있어야합니다.

<script type="text/javascript"> 
    (function(){ 
     var item = $('#<%= div_id %>'); 
     alert(item.selector); // Display #div_id2 
    })(); 
</script> 

나 자바 스크립트 기반 UI 위젯을 생성하는 서버 측 코드를 갖는 맞지 않지만.

+0

** ** ** : 자바 스크립트 기반 UI 위젯을 생성하는 서버 측 코드에 대해서는 동의하지 않지만. ** ** : 그것을 피하기위한 대안은 무엇입니까? – user12882

+0

코드 /보기에 대한 자세한 내용을 게시하고 수행하려는 것을 설명하십시오. 리펙토링을 도와 드릴 수 있습니다. – MrYoshiji

+1

@ user12882 이는 애플리케이션 구조에 크게 좌우됩니다. 우리가 알고있는 모든 것을 당신이 유일한 옵션 인 코너로 코딩 할 수 있습니다. –

관련 문제