2016-01-27 127 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方法來設置值。