| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5930 人关注过本帖
标题:拖动一个元素时阻止子元素响应点击效果
只看楼主 加入收藏
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:4 
拖动一个元素时阻止子元素响应点击效果
想实现一个效果应该怎么处理呢?
<li><a href="http://www.baidu.com"></a></li>
这里定义了li的拖动事件,执行li的拖动事件后居然触发了a标签的点击事件,有什么方式能解决这个问题呢?阻止冒泡也不行。
我想要的效果是:拖动li就执行li的拖动事件,点击时才触发a标签的点击效果跳转到指定的链接中。
完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
<html xmlns="http://www.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="scripts/jquery-1.4.2.min.js"></script>
<style type="text/css">
*{ margin:0; padding:0; }
a{ display:block;}
div{ width:800px;}
ul{ list-style-type:none; width:800px;}
ul li{ width:800px;}
ul li img{ width:100%;}
</style>
</head>

<body>
<div id="slide">
    <ul>
        <li>
            <a href="http://www.baidu.com">
                <img src="images/01.jpg"/>
            </a>
        </li>
    </ul>
</div>
<p id="xinxi"></p>
</body>
<script type="text/javascript">
var mousedown=false;
var point={};
var move={};
$("#slide").bind({
    mousedown:function (event) {
        event.stopPropagation();
        $("#xinxi").html("");
        mousedown=true;
        point.x = event.pageX;
        move.x=0;
    },
    mousemove:function(event){
        event.preventDefault();
        event.stopPropagation();
        if(mousedown){
            move.x=event.pageX;
        }
    },
    mouseup:function(event){
        event.stopPropagation();
        if(mousedown)
        {
            mousedown=false;
            //如果移动的长度超过50px;就处理。
            var zhi=move.x-point.x;
            if(Math.abs(zhi)>50&&move.x>0)
            {
                if(zhi>0)
                    $("#xinxi").html("向右滑动");
                else $("#xinxi").html("向左滑动");
            }
        }
    }
});
</script>
</html>
搜索更多相关主题的帖子: PUBLIC 元素 标签 
2016-05-25 15:26
sldtk1
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:20
帖 子:624
专家分:258
注 册:2006-5-4
收藏
得分:100 
标红部分是新加的代码,其余部分一样。

var mousedown=false;
var point={};
var move={};

var a = $('a');
var flag = 0;


$("#slide").bind({
    mousedown:function (event) {
        flag = 0;
        
        event.stopPropagation();
        $("#xinxi").html("");
        mousedown=true;
        point.x = event.pageX;
        move.x=0;
    },
    mousemove:function(event){
        flag = 1;
  
        event.preventDefault();
        event.stopPropagation();
        if(mousedown){
            move.x=event.pageX;
        }
    },
    mouseup:function(event){
        event.stopPropagation();
        if(mousedown)
        {
            mousedown=false;

            if(flag === 0) {
              a.unbind();
            } else if(flag === 1) {
              a.bind('click',function() {
                  return false;  
              });
            }

            
            //如果移动的长度超过50px;就处理。
            var zhi=move.x-point.x;
            if(Math.abs(zhi)>50&&move.x>0)
            {
                if(zhi>0)
                    $("#xinxi").html("向右滑动");
                else $("#xinxi").html("向左滑动");
            }
        }
    }
});

[此贴子已经被作者于2016-5-25 21:59编辑过]

2016-05-25 21:58
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 2楼 sldtk1
太帅了,测试了一下居然就达到效果了,那里为什么要为a标签绑定个click事件且在事件中直接返回呢?是不想让a标签的点击事件起作用,只让href起作用吗?
2016-05-26 00:02
sldtk1
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:20
帖 子:624
专家分:258
注 册:2006-5-4
收藏
得分:0 
回复 3楼 小赵q1
这个和event.preventDefault()的效果是一样的,阻止a标签的点击默认行为
2016-05-26 02:15
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 4楼 sldtk1
谢谢大牛,这个方式真巧妙
2016-05-26 09:17
快速回复:拖动一个元素时阻止子元素响应点击效果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015307 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved