jquery-11 如何实现标签的鼠标拖动效果

一、总结

一句话总结:核心原理:1、标签实现绝对定位,位置的话跟着鼠标走。2、点击标签的话,给标签绑定事件,停止按住鼠标的话,解除绑定的事件。

1、事件中的return false的作用是什么?

a、防止默认行为的发生
b、防止事件冒泡(一个div里面套一个img,你点click事件,先触发div的click,再穿过div触发img的click事件)

29     function start(event) {
30 deltaX=event.clientX-obj.offset().left;
31 deltaY=event.clientY-obj.offset().top;
32
33 $(document).bind("mousemove", move);
34 $(document).bind("mouseup", stop);
35
36 //阻止默认行为的发生
37 //阻止事件冒泡的发生
38 return false;
39 }

2、event对象如何产生和使用?

事件发生就有event对象,在事件的那个函数里面就可以使用event对象了,也可以把它作为参数传递给其它函数
传进去event对象的位置就可以return false来防止默认事情发生。

29     function start(event) {
30 deltaX=event.clientX-obj.offset().left;
31 deltaY=event.clientY-obj.offset().top;

3、如何实现标签的鼠标拖动效果?

首先给标签绑定鼠标按下事件,获取鼠标位置和标签左上角的差值,鼠标移动的时候给文档对象绑定mousemove事件,鼠标停止按动的时候就解除文档对象所有事件的绑定。

26 function drag(obj){
27 obj.bind("mousedown", start);
28
29 function start(event) {
30 deltaX=event.clientX-obj.offset().left;
31 deltaY=event.clientY-obj.offset().top;
32
33 $(document).bind("mousemove", move);
34 $(document).bind("mouseup", stop);
35
36 //阻止默认行为的发生
37 //阻止事件冒泡的发生
38 return false;
39 }
40
41 function move(event) {
42 obj.css({
43 "left":(event.clientX-deltaX)+"px",
44 "top":(event.clientY-deltaY)+"px"
45 })
46 return false;
47 }
48
49 function stop() {
50 $(document).unbind("mousemove", move);
51 $(document).unbind("mouseup", stop);
52 }
53 }
54
55 obj=$("#div1");
56 drag(obj);

4、js如何将标签对象传递给函数?

获取对象,然后作为参数传递给函数

55 obj=$("#div1");
56 drag(obj);
26 function drag(obj){
27 obj.bind("mousedown", start);

5、如何实现某个元素绑定某个事件的时候执行某个方法?

bind的第二个参数直接方法名,没加字符串,因为js中方法和变量只差一对括号

33         $(document).bind("mousemove", move);
41     function move(event) {
42 obj.css({
43 "left":(event.clientX-deltaX)+"px",
44 "top":(event.clientY-deltaY)+"px"
45 })
46 return false;
47 }

二、如何实现标签的鼠标拖动效果

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>index</title>
<style>
#div1{
position: absolute;
top:0px;
left:0px;
border-radius:256px;
width:256px;
height:256px;
background: #ccc;
overflow: hidden;
}
</style>
<script src="jquery.js"></script>
</head>
<body>
<div id="div1">
<img src="a.png">
</div>
</body>
<script>
function drag(obj){
obj.bind("mousedown", start); function start(event) {
deltaX=event.clientX-obj.offset().left;
deltaY=event.clientY-obj.offset().top; $(document).bind("mousemove", move);
$(document).bind("mouseup", stop); //阻止默认行为的发生
//阻止事件冒泡的发生
return false;
} function move(event) {
obj.css({
"left":(event.clientX-deltaX)+"px",
"top":(event.clientY-deltaY)+"px"
})
return false;
} function stop() {
$(document).unbind("mousemove", move);
$(document).unbind("mouseup", stop);
}
} obj=$("#div1");
drag(obj);
</script>
</html>
 

jquery-11 如何实现标签的鼠标拖动效果的更多相关文章

  1. Web的鼠标拖动效果

    以前写过一个拖动效果的Demo,拖拽元素新位置的计算是放在拖拽元素的mousemove事件中进行的.计算效率差,而且效果不好.所以一直有想怎样才能做出jquery-ui那种顺滑的拖拽效果. 其实顺滑的 ...

  2. Javascript 简单实现鼠标拖动DIV

    http://zhangbo-peipei-163-com.iteye.com/blog/1740078 比较精简的Javascript拖动效果函数代码 http://www.jb51.net/art ...

  3. jQuery实现鼠标拖动改变Div高度

    最近项目中需要在DashBoard页面做一个事件通知栏,该通知栏固定位于页面底部,鼠标拖动该DIV实现自动改变高度扩展内容显示区域. 以下是一个设计原型,基于jQuery实现,只实现了拖动效果,没有做 ...

  4. jquery 鼠标拖动排序Li或Table

    1.前端页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="拖动排序Li或Ta ...

  5. JavaScript 实现鼠标拖动元素

    一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.f ...

  6. 使用jQuery实现简单的拖动效果

    转自:http://www.muzilei.com/archives/136 如何实现拖动效果? 浏览DEMO 首先分析下拖动效果原理: 1.当鼠标在被拖动对象上按下鼠标(触发onmousedown事 ...

  7. 用canvas实现鼠标拖动绘制矩形框

    需要用到jCanvas插件和jQuery. jCanvas下载:https://raw.githubusercontent.com/caleb531/jcanvas/master/jcanvas.mi ...

  8. 使用jquery实现简单的拖动效果,分享源码

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkEAAAERCAIAAADzAOSQAAALRklEQVR4nO3dW5LaaAKEUfa/NkfMGu

  9. jquery div拖动效果示例代码

    div拖动效果想必大家都有见到过吧,实现的方法也是有很多的,下面为大家将介绍使用jquery是如何实现的,感兴趣的朋友不要错过 复制代码代码如下: <%@ page language=" ...

随机推荐

  1. R语言-上海二手房数据分析

    案例:通过分析上海的二手房的数据,分析出性价比(地段,价格,未来的升值空间)来判断哪个区位的二手房性价比最高 1.载入包 library(ggplot2) library(Hmisc) library ...

  2. Objective-C基础笔记(9)Foundation常用类NSArray

    NSArray用来存储对象的有序列表,它是不可变的 NSArray不能存储C语言中的基本数据类型,如int.float.enum.struct,也不能存储nil,nil代表数组元素的结束 // // ...

  3. WebService 的Description 属性说明(转)

    转自:http://exception.thinksaas.cn/0/173/173623.html 在WebMethod的description 中可使用超文本, 举例: 如上图中,红框类的WebS ...

  4. Appium_python3使用汇总

    1. 对webview页面元素的处理self.driver.switch_to.context("WEBVIEW_com.aaa.bbb")source = self.driver ...

  5. WPF 入门《常用控件》

    1.GroupBox 注意: GroupBox仍然需要布局容器来放置元素.如: StackPanel面板 <GroupBox Header="select number?"& ...

  6. [React] Render Elements Outside the Current React Tree using Portals in React 16

    By default the React Component Tree directly maps to the DOM Tree. In some cases when you have UI el ...

  7. 24岁程序员, 一个人撑起App开发项目

    "疲惫吾心,怎样躲藏! 四处荒芜,怎话忧伤?"临近中秋,看到艾瑞斯的QQ签名,无尽的伤感.这个年仅24的青年.连续3年没有回家了,近期一个月总是失眠,没有家人的陪伴,就连女朋友都没 ...

  8. 修改shm,oracle11g需要扩大共享内存

    作者:david_zhang@sh [转载时请以超链接形式标明文章] 链接:http://www.cnblogs.com/david-zhang-index/archive/2012/04/26/24 ...

  9. 原生js大总结十

    91.ajax的优点     a.提高运行效率   b.提高用户体验,让多件事情同时发生   c.在不刷新页面的情况下可以对局部数据进行加载和刷新       92.ajax请求的流程   1.创建通 ...

  10. 忍者无敌-实例解说Cocos2d-x瓦片地图

    实例比較简单,如图所看到的,地图上有一个忍者精灵,玩家点击他周围的上.下.左.右,他能够向这个方向行走. 当他遇到障碍物后是无法穿越的,障碍物是除了草地以为部分,包含了:树.山.河流等. 忍者实例地图 ...