jQuery Mobile Slider 禁用点击事件

在使用jQuery Mobile Slider时,发现在页面上下拖动时,很容易不小心触发Slider的点击事件,从而造成误操作。为此需要禁用Slider的点击事件。

官方API并没有提供禁用点击事件的事件的方法,因此要实现这一功能只能另辟蹊径。留意到点击Slider时都要触发一个mousedown方法改变滑块所处的位置,不妨重写这个方法,在mousedown事件触发时,保持原有的滑块位置不变。

实现方法:

  • 首先找到要操作的对象:

  • 实现代码:
 1  /***    控制滑块任意位置点击事件不可用 ***/
 2 function disableSliderTrack($slider) {
 3
 4     $slider.bind("mousedown", function (event) {
 5
 6         var x = event.pageX;
 7         var y = event.pageY;
 8
 9         var $handle = $(this).find(".ui-slider-handle");
10
11         var left = $handle.offset().left;
12         var right = left + $handle.outerWidth();
13         var top = $handle.offset().top;
14         var bottom = top + $handle.outerHeight();
15
16         return (x >= left && x <= right && y >= top && y <= bottom);
17
18     });
19 }
  • 在页面加载时初始化所有滑块对象
1 $(function(){
2       disableSliderTrack($(".ui-slider-track"));
3 });

至此大功告成。

条条大道通罗马,通过重写控件的mousedown方法也能实现对click事件的“禁用”。

时间: 2024-10-30 09:56:15

jQuery Mobile Slider 禁用点击事件的相关文章

基于jQuery鼠标滑过点击事件音效试听

基于jQuery鼠标滑过点击事件音效试听.这是一款非常简单实用的HTML元素发音音频特效jQuery插件.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="wrapper"> <h1 class="sub-section__title">eventType : </h1> <div class="center" style="margin-top: 40

jquery的on绑定点击事件执行两次的解决办法

js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡 遇到的问题:jquery中用.on()给页面中新加的元素添加点击事件时,点击事件源,绑定的事件执行两次,这里的alert会执行两次,相应地数组删除也执行两次,具体代码如下(其中.tabDel是页面加载之后新生成的元素,故不能用普通的$(‘.tabDel).click(function(){})的方法添加点击事件): 上网找的解决方法大概有一下两种:1.在用 on 绑定 click 事件之前,对该事件解绑,也就是

html 禁用点击事件

1 1.css禁用鼠标点击事件 2 3 .disabled { pointer-events: none; } 4 注:(这个没有试过) 5 6 7 jquery禁用a标签方法1 8 $(document).ready(function () { 9 $("a").each(function () { 10 var textValue = $(this).html(); 11 if (textValue == "XX概况" || textValue == "

jQuery触发a标签点击事件-为什么不跳转

今天开发发现 使用jQuery触发a标签的点击事件,当前的样式发生了变化,可是没有跳转,为什么? 百度后找到的解决方案: <a onclick="hanle()" href="test.jsp" target="main" ><span id="hand">处理</span></a> 在a标签中加上span标签,触发span标签的点击事件. 直接在a标签上触发点击,当前链接onc

jQuery Mobile Slider Widget 使用js控制

jQuery Mobile 滑动条控件 基本用法不用多说了,看这里: http://www.runoob.com/jquerymobile/jquerymobile-form-sliders.html 创建方法还是很简单的,runnoob里面还特地给出了四种不同的滑动条样式. 但是,唯独少了一种效果,就是去除旁边的输入框为 (input 类型为number). 一开始我用的方法是css修改法: #slider{display:none;float:left} 这里的#slider是你创建的Sli

jQuery和JavaScript的点击事件区别

// $("#indexPage").click(); // 触发了a标签的点击事件,但是没有触发页面跳转 document.getElementById("indexPage").click() // 既触发了a标签的点击事件,又触发了页面跳转 <a id="indexPage" href="/index">首页</a> 把 “首页” 改为 “<span id="spanId"

Jquery为DIV添加点击事件,Jquery为a标签超链接添加点击事件

Js代码   <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> 为这5个DIV绑定点击事件,当点击第2个的时候弹出提示2,第4个的时候弹出提示4 <script type="text/javascript"> $(function(){ $("div").e

使用jquery中的click点击事件时出现重复问题的解决

枪响之后,没有赢家. 疫情之时,没有能闲着的医疗相关人员. 别误会,我不是医疗工作者,只是我们做的项目跟医疗服务相关,在这个时候,又怎么能置身事外呢. 所以就开始加班加点呀,嗯.....加的头昏脑胀,代码都写的有点不顺溜了. 之前做的一个项目,有点问题,点击选项的次数过多的时候会卡住,前天一直没发现问题在哪,今天在翻新的时候找到原因了. 由于选项都是获取数据渲染上去的,点击事件也是在渲染完成后绑定上去的,所以造成了重复触发点击的情况,导致点击次数过多时,页面会卡住. 搜了一下找到了解决方法,由于

jquery ajax 放在重复点击事件beforeSend方法

防止重复数据在实际项目开发中,提交表单时常常由于网络或者其原因,用户点击提交按钮误认为自己没有操作成功,进而会重复提交按钮操作次数,如果页面前端代码没有做一些相应的处理,通常会导致多条同样的数据插入数据库,导致脏数据的增加.要避免这种现象,在$.ajax请求中的beforeSend方法中把提交按钮禁用掉,等到Ajax请求执行完毕,在恢复按钮的可用状态. 举个例子: // 提交表单数据到后台处理$.ajax({ type: "post", data: studentInfo, conte