Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery UI调用中获取变量值_Javascript_Jquery_Jquery Ui_Jquery Ui Slider - Fatal编程技术网

Javascript 在jQuery UI调用中获取变量值

Javascript 在jQuery UI调用中获取变量值,javascript,jquery,jquery-ui,jquery-ui-slider,Javascript,Jquery,Jquery Ui,Jquery Ui Slider,我正在使用HTML/CSS/JavaScript/jQuery为Sketchup插件创建一个UI调色板。调色板中有许多实例需要一个带有相关滑块的输入框,因此我决定使用JavaScript创建一个“类”,这样我就可以消除它们。其中一个输入框/滑块组合的HTML如下所示: <span>H:&nbsp;<input type="text" class="InputBox" id="reg_panel_spacing_h"></span> <div cl

我正在使用HTML/CSS/JavaScript/jQuery为Sketchup插件创建一个UI调色板。调色板中有许多实例需要一个带有相关滑块的输入框,因此我决定使用JavaScript创建一个“类”,这样我就可以消除它们。其中一个输入框/滑块组合的HTML如下所示:

<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);

});
var jq_id = "#" + this.element_id;
我遇到的问题是,当我使用这个类创建两个输入框时(如上面的代码所示),两个滑块最终都与第二个输入框相关联。具体而言,上述代码中标记为有问题的jq_id变量最终被设置为两个输入框的“reg_panel_spating_v”。奇怪的是,jq_id被用在“有问题的线”上方的几行来设置slider_jq_id,并且在那里使用时会按预期执行

基本上,似乎正在发生的是,包含“问题行”的函数在创建时与所有滑块的幻灯片事件关联,并且它只使用最近创建的输入框的jq_id。如果这样更改“有问题的行”:

问题已经解决了。所以,我有一个解决办法。我只是希望有人能向我解释到底发生了什么

非常感谢


Josh

尝试将变量设置为局部变量,如下所示:

<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);

});
var jq_id = "#" + this.element_id;

我怀疑,如果不将其本地化,它就会在全球范围内解释这种“奇怪”的行为。

确实如此。我有点不好意思,我没想到。无论如何,谢谢@jkj干杯,这就是我们来这里的目的:)