JS =>处理单击事件与拖动事件并存

使用click事件,很难确定在拖动开始和结束的时候触发,所以使用了onmouseup(释放鼠标的时候),释放鼠标的时候,即在拖动还未结束,但是准备处理的阶段,此时mouseButtonFlag按照逻辑来说应该是true,即不会触发绑定的事件。

1.将click转为使用onmouseup事件

2.添加mouseButtonFlag对象,判断是否拖拽情况,用以处理是否触发鼠标释放(点击)事件

(这个是篇sortable的参数说明的文章,作者xpsharphttp://blog.csdn.net/xpsharp/article/details/6906228

需要处理的是,拖动图片的时候,不能触发点击事件

 1 <ul class="alist ui-sortable" id="acAlbums">
 2                                                             <!--加载相册-->
 3
 4
 5                                                                 <li>
 6                                                                     <div class="closed"></div>
 7                                                                     <div class="media1">
 8                                                                         <a href="#_">
 9                                                                             <img src="http://file.ttyouni.com/image/cf195039ccf61be50eca6fad8beddd837a67e1876165d68ef16fb51385e0341bf7893184ab4034465ca6bbbe041be38bddb9d98c3453acc7799dcc3248aa0a0c0f208bde2f43c2284e2b28331912539c734556076d66b0bf" alt="" url="" onmouseup="openImageSetDialog(this)" width="50"></a>
10                                                                     </div>
11                                                                 </li><li style="position: relative; left: 0px; top: 0px;" class="">
12                                                                     <div class="closed"></div>
13                                                                     <div class="media1">
14                                                                         <a href="#_">
15                                                                             <img src="http://file.ttyouni.com/image/cf195039ccf61be50eca6fad8beddd837a67e1876165d68ef16fb51385e0341bf7893184ab4034465ca6bbbe041be38bddb9d98c3453acc7799dcc3248aa0a0c9474269a0c6f49fc58f17296ca8f10dd734556076d66b0bf" alt="" url="" onmouseup="openImageSetDialog(this)" width="50"></a>
16                                                                     </div>
17                                                                 </li><li style="position: relative; left: 0px; top: 0px;" class="">
18                                                                     <div class="closed"></div>
19                                                                     <div class="media1">
20                                                                         <a href="#_">
21                                                                             <img src="http://file.ttyouni.com/image/cf195039ccf61be50eca6fad8beddd837a67e1876165d68ef16fb51385e0341bf7893184ab4034465ca6bbbe041be38bddb9d98c3453acc7799dcc3248aa0a0c0f208bde2f43c2284e2b28331912539c734556076d66b0bf" alt="" url="" onmouseup="openImageSetDialog(this)" width="50"></a>
22                                                                     </div>
23                                                                 </li><li style="position: relative; left: 0px; top: 0px;" class="">
24                                                                     <div class="closed"></div>
25                                                                     <div class="media1">
26                                                                         <a href="#_">
27                                                                             <img src="http://file.ttyouni.com/image/cf195039ccf61be50eca6fad8beddd837a67e1876165d68ef16fb51385e0341bf7893184ab4034465ca6bbbe041be38bddb9d98c3453acc7799dcc3248aa0a0c0f208bde2f43c2284e2b28331912539c734556076d66b0bf" alt="" url="" onmouseup="openImageSetDialog(this)" width="50"></a>
28                                                                     </div>
29                                                                 </li>
30                                                                 <li style="position: relative; left: 0px; top: 0px;" class="">
31                                                                     <div class="closed"></div>
32                                                                     <div class="media1">
33                                                                         <a href="#_">
34                                                                             <img src="/Content/Images/Scene/Gather204/banner.jpg" alt="" url="http://www.ttyouni.com/" onmouseup="openImageSetDialog(this)" width="50"></a>
35                                                                     </div>
36                                                                 </li>
37
38                                                                                                                         <li class="add">
39                                                                 <a href="javascript:;">
40                                                                     <img src="/Content/Images/Scene/Vote004/jia.jpg" onclick="openImageSetDialog(this,1)" width="50">
41                                                                 </a>
42                                                             </li>
43                                                         </ul>

html

处理的JS

var mouseButtonFlag = false;//控制是否触发点击事件
        //拖动
        $(‘#acAlbums‘).sortable({
            items: "li:not(.add)",
            start: function (event, ui) {
                mouseButtonFlag = true;
            },
            stop: function (event, ui) {
                mouseButtonFlag = false;
            }
        });

        //打开轮播图片设置的弹窗
        function openImageSetDialog(obj,v) {
            if (mouseButtonFlag) {
                return;
            }
            if (v!=undefined) {//添加图片对象
                $("#show_image_1").attr("src", "/Content/Images/Scene/Vote004/jia.jpg");
                $("#image_url_txt").val("http://ttyouni.com/show/index")
            }
            else {
                $("#show_image_1").attr("src", $(obj).attr("src"));
                $("#image_url_txt").val($(obj).attr("url"))
            }
            $("#image_index_txt").val($(obj).parents("#acAlbums li").index())
            $("#choose_activebox1").show();
        }
时间: 2024-08-30 07:54:47

JS =>处理单击事件与拖动事件并存的相关文章

javascript中区分鼠标单击和拖动事件

在javascript中,一般的DOM元素如div,都有onmousedown.onmousemove.onmouseup这3个鼠标事件. <div id="div1" onmousedown="down();" onmouseup="up();" onmousemove="move();"></div> 当鼠标在div1上移动或者按下左键拖动的时候,都会触发onmousemove事件.如何区分这2种事

事件-拖动事件

本章节讲述的是拖动事件.具体看下面的代码 drag.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="drag.js" type="text/javascript"></script> &l

运用HTML5原生拖动事件(drag)实现拖动效果

拖动效果相信很多朋友都自己写过,不管你用原生JS还是Jquery要实现起来也很简单,但是今天我想介绍的是运用HTML5标准中定义的原生拖动事件实现拖动效果. 一.背景: 其实说是HTML5标准定义,其实最早在IE4中就有拖放功能的API,只是在IE4中,网页中只有两种对象可以拖放:图像和某些文本.并且在IE4中唯一有效的放置目标是文本框.到了IE5.5,拖放功能得到了扩展,让网页中的任何元素都可以拖放.最终HTML5以IE的实力为基础制定了拖放规范.FF3.5+,Safari3+和Chrome根

js keyup、keypress和keydown事件 详解

js keyup.keypress和keydown事件  详解 js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏览器中,都可能有三种客户端事件. keydown event keypress event keyup event keydown事件发生在键盘的键被按下的时候,接下来触发keypress事件. keyup 事件在按键被释放的时候触发. 这三个事件在页面中的使用方法如下例: <input id=&quo

JS—触摸事件、手势事件

JS-触摸事件.手势事件 dbclick触屏设备不支持双击事件.双击浏览器窗口,会放大画面.可以通过在head标签内加上这么一行: <meta name="viewport" content="width=device-width, minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> 可以实现,我们编写的页面不会随着用的手势而放大缩小.关于meta标签,我还没有研究过,罪过啊. mouse在触屏上

js区分鼠标单双击 阻止事件冒泡

function clickOrDblClick(obj) { count++; if (obj != undefined) { var rowStr = $.trim($(obj).find("td:eq(1)").text().replace(/※/g, '')); currentRowpm = rowStr; } timer = window.setTimeout(function(obj) { var currentTr = $("#tbMainDeputy"

js中容易被忽视的事件问题总结

一:跨平台事件 什么叫跨平台事件?即在不同的浏览器上执行同一事件,所使用的方法不同. 什么是EventUtil对象?有什么作用?即将所有与事件相关的函数,融合在一起的一个容器,方便管理事件对象,它没有属性.主要处理DOM事件和IE事件的磨合,使其尽可能的相似. 下面我们来看一下DOM和IE之间的对象属性和方法做个对比(这里只指出两者之间不同的属性和方法),主要有以下五大点: DOM属性和方法 IE属性和方法 charcode keycode preventDefault returnValue=

Android长按及拖动事件探究

Android中长按拖动还是比较常见的.比如Launcher中的图标拖动及屏幕切换,ListView中item顺序的改变,新闻类App中新闻类别的顺序改变等.下面就这个事件做一下分析. 就目前而言,Android中实现长按事件响应有几种方式,包括: 设置View.OnLongClickListener监听器 通过GestureDetector.OnGestureListener间接获取长按事件 实现View.OnTouchListener,然后在回调中通过MotionEvent判断是否触发了长按

js绑定事件和解绑事件

在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法  只支持IE678,不兼容其他浏览器 addEventListener方法   兼容火狐谷歌,不兼容IE8及以下 addEventListener方法 div.addEventListener('click',fn); div.addEventListener('click',fn2); function fn(){ console.log("春