如何处理页面中多个滑动条的滑动条更改事件:JqueryMobile
How to handle slider change event for multiple sliders in a page: JqueryMobile
在我的应用程序中,我在一个HTML模板中有多个页面,每个页面有5个滑块,当我移动滑块时,根据值(1到5),我将显示一个文本。下面是两个页面的示例
<!-- Start of 2 page-->
<div data-role="page" id="page2" >
<!-- Start of content -->
<div data-role="content" id="target-content">
<label for="slider">1. .............</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="5" />
<label id="sliderlabel"></label>
<label for="slider1">2............................ </label>
<input type="range" name="slider" id="slider" value="0" min="0" max="5" />
<label id="sliderlabel"></label>
<label for="slider2">3. ................</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="5" />
<label id="sliderlabel"></label>
</div>
<!-- end of content -->
</div>
<!-- end of 2 page-->
<!-- Start of 3 page-->
<div data-role="page" id="page3" >
<!-- Start of content -->
<div data-role="content" id="target-content"" >
<label for="slider">1. .............</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="5" />
<label id="sliderlabel"></label>
<label for="slider1">2............................ </label>
<input type="range" name="slider" id="slider" value="0" min="0" max="5" />
<label id="sliderlabel"></label>
<label for="slider2">3. ................</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="5" />
<label id="sliderlabel"></label>
</div>
<!-- end of content -->
</div>
<!-- end of 3 page-->
我正在做的第一个滑动条基于id如下:
<script type="text/javascript">
$(document).on('pagecreate', function() {
$("#slider").change(function () {
sVal = $(this).val();
if (sVal == 0) {
$('#sliderlabel').text('');
}
if (sVal == 1) {
$('#sliderlabel').text('Strongly disagree');
}
if (sVal == 2) {
$('#sliderlabel').text('Disagree');
}
if (sVal == 3) {
$('#sliderlabel').text('Neither agree nor disagree');
}
if (sVal == 4) {
$('#sliderlabel').text('Agree');
}
if (sVal == 5) {
$('#sliderlabel').text('Strongly Agree');
}
});
});
</script>
现在如何实现更改页面的每个滑块的文本,以及在一个单独的index.html页面中的所有其他页面的滑块
正如@Raymond Camden在他的回答中提到的,使用.class
而不是id
,因为id
应该是唯一的。
由于您正在使用多页模型,您需要在pagecreate
事件上添加change
侦听器。但是,您必须指定哪个页面,以避免在同一页面(通常是DOM的第一页)上添加多个侦听器。在pagecreate
上,将change
侦听器添加到$(event.target)
页面内的.slider
。
$(document).on("pagecreate", function (event) {
$(event.target).find(".slider").on("change", function () {
sVal = $(this).val();
if (sVal == 1) {
$(this).closest("div").next('.sliderlabel').text('New text');
}
});
});
$(event.target)
是已经创建的页面,使用.find()
,将change
的监听器附加到.slider
上。
要更改标签的文本,还需要将id
替换为.class
。此外,您需要使用.closest()
和.next()
,因为滑块被包装在<div class="ui-slider">
中,而标签是该div的兄弟。
将选择器从基于ID的(#something)更改为基于类的(.something)。然后修改代码,使用jQuery兄弟类型选择器使sliderlabel更通用。例如,标签看起来总是滑块的下一个项目。next() api (http://api.jquery.com/next/)应该可以做到。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- jQueryMobile动态页面-多次触发事件
- jquerymobile动态创建一个单选按钮并监听点击事件
- jquerymobile返回上一页onclick事件不起作用
- 如何在jquerymobile中侦听两个事件并只启动一个函数
- 如何在jQueryMobile中将事件附加到动态加载的子页面
- 点击jquerymobile中的事件
- JQueryMobile页面容器事件和ModelViewController模式
- jQueryMobile添加点击事件到按钮,而不是改变页面
- 如何处理页面中多个滑动条的滑动条更改事件:JqueryMobile