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工具方法弹出蒙版
May 08 Javascript
javascript 闭包详解
Jul 02 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
浅谈JS的基础类型与引用类型
Sep 13 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
Feb 18 Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 jQuery
jquery操作select常见方法大全【7种情况】
May 28 jQuery
element实现合并单元格通用方法
Nov 13 Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 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使用imagick扩展实现合并图像的方法
2017/04/25 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
JavaScript闭包详解
2015/02/02 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
python根据时间获取周数代码实例
2019/09/30 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
详解python内置模块urllib
2020/09/09 Python
python调用win32接口进行截图的示例
2020/11/11 Python
python3代码中实现加法重载的实例
2020/12/03 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
协议书样本
2014/04/23 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
2014年督导工作总结
2014/11/19 职场文书
2015年健康教育工作总结
2015/04/10 职场文书