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 デザインの観点からのみ、そうではないことがわかります。
私に何ができる?
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");
修理
Ivan answer から、必要なものは次のとおりです。
<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());
}
頭を上げてくれてありがとう、イヴァン。