js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码


Posted in Javascript onMay 13, 2016

今天遇到一个很奇葩的需求,是这样的:当我点击文字的时候弹出一个删除按钮,可以删除刚才点击的文字.

诶?当时想了想,没什么难度吧.可是,既然是奇葩的需求怎么可能这么简单.

对,还有一个功能.我并不知道我点了哪个标签,英文可以承载文字的标签太多太多....

当时我tm就懵逼了.你都不知道要点哪个标签,我怎么去绑定事件?给谁绑定事件?  扯了半天,还是要写.于是就动工了.

我思路是这样的:

START

1,首先得获取鼠标点击的对象.(问题是...我怎么知道点了哪个)

那么先写个函数去获取鼠标点击的对象吧

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

 

get_tag这个函数被绑定在body的onclick事件上,然后接受了一个event参数;

然后event对象有个target属性,是可以直接获取鼠标点击的对象.

我们log看看

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

 

恩,可以的.和预先的思路一致.得到了想要的结果.

2, 得到对象.可是要怎么删除呢?

var del_tag = function(){
    var tag=null;
    return {
      get:function(e){
        tag = e;
      },
      del:function(){
        $(tag).remove();
      }
    }
  }

由于删除按钮和我们鼠标所点击的对象并没有什么联系.所以我们得写个闭包,声明一个tag去保存我们所点击的对象.

然后返回两个函数,一个get.用来获取鼠标上次点击的对象.一个是del.顾名思义,删除点击的对象.

由于是闭包,所以tag会被保存到内存中.正好实现所要的功能.

3. 二者结合

var del_tag = function(){
    var tag=null;
    return {
      get:function(e){
        tag = e;
      },
      del:function(){
        $(tag).remove();
      }
    }
  }

  var dt = del_tag();//把del_tag赋值给dt


  function get_tag(e){
    var ele = e.target;
    //调用dt.get() 参数就是get_tag函数event参数的值的target
    dt.get($(ele));
  }

  $('#del').click(function(){    
    //这里,由于创建了闭包.我们上次点击的对象被保存了起来.
    //所以这里可以直接调用dt.del() 删除对象
    dt.del();
  })

4.看看效果

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

 

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

5.效果还不错.可是..随便点击某个对象都可以删除.这是不是就乱套了?接着改

var del_tag = function(){
    var tag=null;
    return {
      get:function(e){
        tag = e;
      },
      del:function(){
        $(tag).remove();
      }
    }
  }

  var dt = del_tag();//把del_tag赋值给dt


  function get_tag(e){

    var ele = e.target;
    $(ele).css('border','1px solid red')
    var tagname = ele.tagName;
    //定义一个tag数组. 用来存储我们想删除的对象
    var tagarr = ['SPAN','H1','H2','H3','H4','H5','H6','P'];
    //判断如果我们点击的对象 是不是我们数组里所声明的,可以删除的.
    if(tagarr.indexOf(tagname) > -1){      
      //调用dt.get() 参数就是get_tag函数event参数的值的target
      dt.get($(ele));
    }  
    
  }

  $('#del').click(function(){  
    
    //这里,由于创建了闭包.我们上次点击的对象被保存了起来.
    //所以这里可以直接调用dt.del() 删除对象
    dt.del();
  })

看看效果:

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

恩恩.看来对了.不是我们所定义的对象就不可以删除.

虽然和需求上说的删除文字有点区别.但是只要你告诉我你会用那些标签去承载文字.我就可以删除...

强调一下.我们的get_tag()函数可以别放在body或者html的onclick事件上.不然整个页面的文字一点就删除了....

get_tag()函数就绑定在你想删除文字那块div上.

以上这篇js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
javascript写的日历类(基于pj)
Dec 28 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
很全面的JavaScript常用功能汇总集合
Jan 22 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
webpack4+react多页面架构的实现
Oct 25 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 Javascript
Javascript操作select控件代码实例
Feb 14 Javascript
最简单的tab切换实例代码
May 13 #Javascript
浅析创建javascript对象的方法
May 13 #Javascript
全面理解JavaScript中的闭包
May 12 #Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
May 12 #Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 #Javascript
js自定义select下拉框美化特效
May 12 #Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 #Javascript
You might like
php学习之简单计算器实现代码
2011/06/09 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
python实现贪吃蛇小游戏
2020/03/21 Python
python selenium firefox使用详解
2019/02/26 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
extern是什么意思
2016/03/10 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
半年思想汇报
2013/12/30 职场文书
怎样填写就业意向
2014/04/02 职场文书
个人委托书格式
2014/04/04 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
群众路线个人整改方案
2014/10/25 职场文书
入党介绍人意见2015
2015/06/01 职场文书
在职证明范本
2015/06/15 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
python实现图片批量压缩
2021/04/24 Python