Я тестирую ползунок в jQueryMobile , и я, должно быть, что-то упустил.
Код страницы:
<div data-role="fieldcontain">
<label for="slider">Input slider:</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="100" />
</div>
и если я сделаю:
$("#slider").data("events");
Я получу
blur, focus, keyup, remove
Что я хочу сделать, это получить значение, как только пользователь отпустит ручку ползунка
и наличие события keyup как
$("#slider").bind("keyup", function() { alert('here'); } );
абсолютно ничего не делает: (
Я должен сказать, что я ошибочно предположил , что jQueryMobile использовал jQueryUI контролирует, как это было моей первой мыслью, но теперь, работая глубоко в событиях, я вижу, что это не так, только с точки зрения CSS Design.
Что можетЯ делаю?
jQuery Mobile Slider Исходный код можно найти на Git , если это кому-нибудь также поможет, на тестовой странице можно найти в JSBin
Как я понимаю, #slider
- это текстовое поле со значением, поэтому мне нужно подключиться к дескриптору ползунка, как сгенерированныйкод для этого ползунка:
<div data-role="fieldcontain" class="ui-field-contain ui-body ui-br">
<label for="slider" class="ui-input-text ui-slider" id="slider-label">Input slider:</label>
<input data-type="range" max="100" min="0" value="0" id="slider" name="slider" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c ui-slider-input" />
<div role="application" class="ui-slider ui-btn-down-c ui-btn-corner-all">
<a class="ui-slider-handle ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c" href="#" data-theme="c" role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="54" aria-valuetext="54" title="54" aria-labelledby="slider-label" style="left: 54%;">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text"></span>
</span>
</a>
</div>
</div>
и проверяя события в привязке обработчика, я получаю только click
событие
$("#slider").next().find("a").data("events");
Fix
Из ответа Ивана нам просто нужно:
<div data-role="fieldcontain">
<label for="slider">Input slider:</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="100" />
</div>
, а затем
$(document).bind("pagecreate", function(event, ui) {
$('#slider').siblings('.ui-slider').bind('tap', function(event, ui){ makeAjaxChange($(this).siblings('input')); });
$('#slider').siblings('.ui-slider a').bind('taphold', function(event, ui){ makeAjaxChange($(this).parent().siblings('input'));
});
function makeAjaxChange( elem ) {
alert(elem.val());
}
Спасибо Иван за голову.