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 相关文章推荐
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
Apr 23 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
Jquery实现鼠标移动放大图片功能实例
Mar 25 Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
element-ui 限制日期选择的方法(datepicker)
May 16 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 Javascript
javascript运行机制之执行顺序理解
Aug 03 Javascript
vue中使用vue-pdf的方法详解
Sep 05 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
最简单的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 cache类代码(php数据缓存类)
2010/04/15 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
php防止sql注入代码实例
2013/12/18 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
php中文验证码实现方法
2015/06/18 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Django继承自带user表并重写的例子
2019/11/18 Python
python线程join方法原理解析
2020/02/11 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
python集合能干吗
2020/07/19 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
校运会入场式解说词
2014/02/10 职场文书
企业年会主持词
2014/03/27 职场文书
超市客服工作职责
2014/06/11 职场文书
美化环境标语
2014/06/20 职场文书
营销总监岗位职责
2014/09/16 职场文书
大学生见习报告范文
2014/11/03 职场文书
教师个人学习总结
2015/02/11 职场文书
企业催款函范本
2015/06/24 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
python数字类型和占位符详情
2022/03/13 Python
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
MySQL学习之基础操作总结
2022/03/19 MySQL