2011-01-18 2 views
0

저는 HTML/CSS/JavaScript/jQuery를 사용하여 Sketchup 플러그인 용 UI 팔레트를 만듭니다. 팔레트에는 연결된 슬라이더가있는 입력 상자가 있어야하는 인스턴스가 많기 때문에 JavaScript를 사용하여 "클래스"를 만들기로 결정 했으므로이를 제거 할 수 있습니다. 입력 상자/슬라이더 콤보 중 하나에 대한 HTML은 다음과 같습니다jQuery UI 호출에 변수 값 가져 오기

<span>H:&nbsp;<input type="text" class="InputBox" id="reg_panel_spacing_h"></span> 
<div class="SliderSpan" id="reg_panel_spacing_h_slider"></div><br/> 

자바 스크립트의 관련 부분은 다음과 같습니다

$(document).ready(function() { 

    function InputBoxJS (id, mi, ma, numtype, slider) { 

     this.current_val = mi; 
     this.element_id = id; 
     this.minimum = mi; 
     this.maximum = ma; 

     var self = this; 

     // string for selecting element using jquery 
     jq_id = "#" + this.element_id; 

     // slider code (if input box has associated slider) 
     if(slider = true) { 
      slider_jq_id = jq_id + "_slider" // id for selecting slider; assumes it's input id + "_slider"   

      $(slider_jq_id).slider({ 
       min: mi, 
       max: ma, 
       value: self.current_val, 
       slide: function(event,ui) { 
        $(jq_id).val(ui.value); // PROBLEMATIC LINE 
        call_ruby("manipulate_data", self.element_id); 
       } 
      }); 
     } // if slider = true 
    } 

    // create script objects for two input boxes 
    var reg_panel_spacing_h = new InputBoxJS("reg_panel_spacing_h", 500, 50000, 0, true); 
    var reg_panel_spacing_v = new InputBoxJS("reg_panel_spacing_v", 500, 50000, 0, true); 

}); 

제가하는 데 문제는 내가 만들 때이다 이 클래스를 사용하는 두 개의 입력 상자 (위 코드에 표시된대로)는 두 슬라이더가 두 번째 입력 상자와 연결됩니다. 특히 위의 코드에서 문제가있는 것으로 표시된 jq_id 변수는 두 입력 상자에서 모두 "reg_panel_spacing_v"로 설정됩니다. 기괴한 것은 jq_id가 slider_jq_id를 설정하기 위해 "problematic line"보다 몇 줄 위에 사용되고, 거기에서 사용될 때 예상대로 수행된다는 것입니다.

기본적으로 "문제가있는 줄"이 포함 된 함수는 모든 슬라이더의 슬라이드 이벤트가 생성 될 때 해당 슬라이더 이벤트와 관련이 있으며 가장 최근에 만든 입력의 jq_id 만 사용합니다 상자. 다음과 같이 "problematic line"을 변경하는 경우 :

$(("#" + self.element_id)).val(ui.value); 

문제가 해결되었습니다. 그래서 해결 방법이 있습니다. 나는 누군가가 나에게 정확히 무슨 일이 일어나는지를 설명 할 수 있기를 바랄 뿐이다.

감사합니다. 이 같은 변수 지역을

조쉬

답변

0

시도 :

var jq_id = "#" + this.element_id; 

내가 용의자가 현지는 "기괴한"행동을 설명 전역 범위를 얻을하지 않고.

+0

실제로 그렇게합니다. 나는 그 생각을하지 못했지만 가볍게 당황 스럽다. 어쨌든, 고마워! – jkjenner

+0

@jkj 건배, 우리가 여기있는 이유입니다. :) –