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 相关文章推荐
文本链接逐个出现的js脚本
Dec 12 Javascript
JavaScript 创建对象和构造类实现代码
Jul 30 Javascript
json 实例详细说明教程
Oct 31 Javascript
javascript常用代码段搜集
Dec 04 Javascript
jQuery Html控件基本操作(日常收集整理)
Mar 11 Javascript
判断数组是否包含某个元素的js函数实现方法
May 19 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
JS简单验证上传文件类型的方法
Apr 17 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
May 09 Javascript
js实现网页同时进行多个倒计时功能
Feb 25 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 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新手上路(二)
2006/10/09 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
python中pow函数用法及功能说明
2020/12/04 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
耐克亚太地区:Nike APAC
2019/12/07 全球购物
仓库组长岗位职责
2014/01/29 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
九九重阳节标语
2014/10/07 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
生日答谢词
2015/01/05 职场文书
捐款感谢信
2015/01/20 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
比较几种Redis集群方案
2021/06/21 Redis
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏