jquery利用拖拽方式在图片上添加热链接


Posted in Javascript onNovember 24, 2015

本文实例讲述了jquery利用拖拽方式在图片上添加热链接的实现过程,分享给大家供大家参考。具体如下:
运行效果截图如下:

jquery利用拖拽方式在图片上添加热链接

项目的需求,要在一张图片上加不同的链接,比如说,图片是一个套房,里面有沙发,茶几,酒柜,电视柜等,然后在这些物件上加一个超链接,点击后打开相关产品的介绍。

用jquery写了一个在图片添加锚点的功能,实现的原理:一个文本框写入标题,一个文本框写链接,一个添加按钮,一个编辑按钮,当写好内容后点击添中添加,便会在图片的上方出现一个P标签,然后按着鼠标左键拖拽该标签放到相应的地方松开就可以了,下面来看具体代码。

首入引入jquery库

<script src="js/jquery/1.11.1/jquery.min.js"></script>

构建html。

<div class="box">
 <input type="text" name="title">
 <input type="text" name="link" value="http://">
  <input type="button" value="添加链接" id="add">
 <input type="button" value="编辑" id="show">
</div>
<div class="img_box">
 <img src="images/55cc64813c330.jpg">
</div>

写上CSS,注意这里标签的位置是相对于图片的位置的,所以图片的img_box要加上position: relative;

*{padding: 0; margin: 0;}
.box{margin: 10px;}
.img_box{position: relative;}
.img_box .maodian{position: absolute; padding: 5px 10px; border-right: 5px; background: #000; 
   filter:alpha(opacity=40); 
   -moz-opacity:0.4; 
   opacity:0.4;
   top:10px;
   left:10px;
   color:#FFF;
   font-size: 12px;
   font-family: "宋体";
   cursor: pointer;
}
.maodian a{color: #FFF; text-decoration: none;}

写上JS

$(function(){
   var obj = null ;//定义标签对象的全局变量,目的用于编辑
   $("#add").click(function(){//绑定添加按钮单击事件
    var title = $("input[name=title]").val();//取得标题内容
    var link = $("input[name=link]").val();//取得超链接
    var html = "<p class='maodian'><a href='"+link+"'>"+title+"</a></p>";组装P标签
    $(".img_box").append(html); //添加到img_box div中,即图片的后面
   });
 
   $(".img_box").delegate(".maodian","mousedown",function(e){//绑定标签鼠标按下事件
    obj = $(this);//把当前标签对象赋值给变量
    if(obj.setCapture){ //用于兼容非准浏览器
     obj.setCapture();
    }
    $("input[name=title]").val(obj.find("a").text());//把点中标签的内容加到标题文本框中
    $("input[name=link]").val(obj.find("a").attr("href"));/把点中标签的链接加到链接本框中
     var _x = e.pageX - obj.offset().left;//取得鼠标到标签左边left的距离
     var _y = e.pageY - obj.offset().top; //取得鼠标到标签顶部top的距离
     var oWidth = $(this).outerWidth(); //取得标签的宽,包括padding
     var oHeight = $(this).outerHeight();//取得标签的高,包括padding
     var x=0,y=0; 定义移动的全局变量
 
     $(".img_box").bind("mousemove",function(e){
      var img_position = $(".img_box").offset(); //取得图片的位置
      x = e.pageX -_x - img_position.left; //计算出移动的x值
      y = e.pageY -_y - img_position.top; //计算出移动的y值
      if(x<0){ //如果移动小于0,证明移到了图片外,应设为0
       x = 0;
      }else if(x>($(".img_box img").width()-oWidth)){
      //如果移动大于图片的宽度减去标签的宽度,证明移到了图片外,应该设为可用的最大值
       x = $(".img_box img").width()-oWidth;
      }
 
      if(y<0){ //同上
       y = 0;
      }else if(y>($(".img_box img").height()-oHeight)){
       y = $(".img_box img").height()-oHeight;
      }
      obj.css({"left":x,"top":y});
     });
 
     $(".img_box").bind("mouseup",function(){ //绑定鼠标左键弹起事件
      $('.img_box').unbind("mousemove"); //移动mousemove事件
      $(this).unbind("mouseup"); //移动mouseup事件
      if(obj.releaseCapture){ //兼容非标准浏览器
      obj.releaseCapture();
     }
      
     });
     return false; //用于选中文字时取消浏览器的默认事件
   });
 
   $(".img_box").delegate(".maodian","dblclick",function(){//绑定双击事件
    $(this).remove(); //删除当前标签
   })
 
   $("#show").click(function(){//绑定编辑按钮
     //更新内容到标签
    obj.find("a").text($("input[name=title]").val()).attr("href",link);
   })
  
   $(".img_box").delegate("a","click",function(){ //取消a标签的单击默认事件
    return false;
   })
 
  })

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript RadioButtonList获取选中值
Apr 09 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
Oct 20 Javascript
使用javaScript动态加载Js文件和Css文件
Oct 24 Javascript
浅谈jQuery为哪般去掉了浏览器检测
Aug 29 Javascript
很棒的一组js图片轮播特效
Jan 12 Javascript
原生js编写2048小游戏
Mar 17 Javascript
jQuery完成表单验证的实例代码(纯代码)
Sep 30 jQuery
VueRouter导航守卫用法详解
Dec 25 Javascript
JavaScript实现栈结构Stack过程详解
Mar 07 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 #Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 #Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 #Javascript
基于jquery实现简单的手风琴特效
Nov 24 #Javascript
jQuery插件实现无缝滚动特效
Nov 24 #Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 #Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 #Javascript
You might like
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
jquery实现搜索框功能实例详解
2018/07/23 jQuery
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
python人人网登录应用实例
2014/09/26 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python3实现购物车功能
2018/04/18 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
基于python操作ES实例详解
2019/11/16 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
python logging模块的使用
2020/09/07 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
《穷人》教学反思
2016/02/19 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python