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 相关文章推荐
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
js验证上传图片的方法
May 12 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
Jun 03 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
Jun 09 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
Aug 18 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 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实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
Yii中表单用法实例详解
2016/01/05 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
JS 常用校验函数
2009/03/26 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
python记录程序运行时间的三种方法
2017/07/14 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
Linux如何压缩可执行文件
2013/10/21 面试题
英语文学专业学生的自我评价
2013/10/31 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
商务邀请函
2015/01/30 职场文书
Android Studio 计算器开发
2022/05/20 Java/Android