我正在测试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");
使固定
从伊万的回答中,我们只需要:
<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());
}
谢谢伊万的提醒。