2016-01-27 126 views
2

我不能让jQuery来访问元素的事件函数中:无法访问元素内部功能

的jsfiddle: https://jsfiddle.net/w3zv5t0s/2/

在页面加载,在的document.ready可以看到滑块到10。然而,拨动开关,没有任何反应,就应该到1

JS:

$(document).ready(function() { 

    //WORKS HERE 
    $(".dimmerSlider").val(10).slider("refresh"); 

    $('.toggle').on("slidestop", function() { 

    //NOT HERE 
     $(".dimmerSlider").val(1).slider("refresh"); 

    }); 

}); 

HTML:

<select class='toggle' id='3' data-role='slider' data-itemID='3'> 
    <option value='ON'>On</option> 
    <option value='OFF' selected='selected'>Off</option> 
</select> 

<input class='dimmerSlider' type='range' id='3' value='15' min='0' max='15' step='1' data-highlight='true' data-itemID='sl3' /> 

回答

2

你需要调用该函数slider之前委派change事件(而不是slidestop)。

$(document).ready(function() { 

    $('.toggle').on("change", function() { 
     $(".dimmerSlider").val(1).slider("refresh");  
    }); 

    $(".dimmerSlider").val(10).slider("refresh"); 
}); 

工作例如:https://jsfiddle.net/DinoMyte/w3zv5t0s/3/

+0

这似乎不工作与jQuery的移动...一旦我添加jquery移动文件回来停止工作,即时通讯使用1.4.5 –

+0

问题看起来像它与我的代码在其他地方,它的工作原理jfiddle。谢谢 –

+0

当然。乐意效劳 – DinoMyte

1

它看起来像你正在使用带jQueryUI的滑块范围的输入。

如果您想使用滑块小部件,根据http://api.jqueryui.com/slider/的文档,您可能会使用div并使用设置该值的选项来实例化它。然后您将使用滑块调用进行进一步更新。一定要在页面中包含jQuery UI代码。

<select class='toggle' id='3' data-role='slider' data-itemID='3'> 
    <option value='ON'>On</option> 
    <option value='OFF' selected='selected'>Off</option> 
</select> 

<div class='dimmerSliderDiv'></div> 

<input class='dimmerSliderInput' type='range' id='3' value='15' min='0' max='15' step='1' data-highlight='true' data-itemID='sl3' /> 

$(document).ready(function() { 
$(".dimmerSliderDiv").slider({ 
    "value": 10 
}); $(".dimmerSliderInput").val(10); 
    $('.toggle').on("change", function() { 
     $(".dimmerSliderDiv").slider("option", "value", ($(this).val() === "OFF") ? 0 : 15); 
     $(".dimmerSliderInput").val(($(this).val() === "OFF") ? 0 : 15); 
    }); 
}); 

如果你打算使用的范围内输入,你可以使用VAL方法来设置值。