js獲取鼠標(biāo)點擊的對象,點擊另一個按鈕刪除該對象的實現(xiàn)代碼
今天遇到一個很奇葩的需求,是這樣的:當(dāng)我點擊文字的時候彈出一個刪除按鈕,可以刪除剛才點擊的文字.
誒?當(dāng)時想了想,沒什么難度吧.可是,既然是奇葩的需求怎么可能這么簡單.
對,還有一個功能.我并不知道我點了哪個標(biāo)簽,英文可以承載文字的標(biāo)簽太多太多....
當(dāng)時我tm就懵逼了.你都不知道要點哪個標(biāo)簽,我怎么去綁定事件?給誰綁定事件? 扯了半天,還是要寫.于是就動工了.
我思路是這樣的:
START
1,首先得獲取鼠標(biāo)點擊的對象.(問題是...我怎么知道點了哪個)
那么先寫個函數(shù)去獲取鼠標(biāo)點擊的對象吧
get_tag這個函數(shù)被綁定在body的onclick事件上,然后接受了一個event參數(shù);
然后event對象有個target屬性,是可以直接獲取鼠標(biāo)點擊的對象.
我們log看看
恩,可以的.和預(yù)先的思路一致.得到了想要的結(jié)果.
2, 得到對象.可是要怎么刪除呢?
var del_tag = function(){ var tag=null; return { get:function(e){ tag = e; }, del:function(){ $(tag).remove(); } } }
由于刪除按鈕和我們鼠標(biāo)所點擊的對象并沒有什么聯(lián)系.所以我們得寫個閉包,聲明一個tag去保存我們所點擊的對象.
然后返回兩個函數(shù),一個get.用來獲取鼠標(biāo)上次點擊的對象.一個是del.顧名思義,刪除點擊的對象.
由于是閉包,所以tag會被保存到內(nèi)存中.正好實現(xiàn)所要的功能.
3. 二者結(jié)合
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; //調(diào)用dt.get() 參數(shù)就是get_tag函數(shù)event參數(shù)的值的target dt.get($(ele)); } $('#del').click(function(){ //這里,由于創(chuàng)建了閉包.我們上次點擊的對象被保存了起來. //所以這里可以直接調(diào)用dt.del() 刪除對象 dt.del(); })
4.看看效果
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數(shù)組. 用來存儲我們想刪除的對象 var tagarr = ['SPAN','H1','H2','H3','H4','H5','H6','P']; //判斷如果我們點擊的對象 是不是我們數(shù)組里所聲明的,可以刪除的. if(tagarr.indexOf(tagname) > -1){ //調(diào)用dt.get() 參數(shù)就是get_tag函數(shù)event參數(shù)的值的target dt.get($(ele)); } } $('#del').click(function(){ //這里,由于創(chuàng)建了閉包.我們上次點擊的對象被保存了起來. //所以這里可以直接調(diào)用dt.del() 刪除對象 dt.del(); })
看看效果:
恩恩.看來對了.不是我們所定義的對象就不可以刪除.
雖然和需求上說的刪除文字有點區(qū)別.但是只要你告訴我你會用那些標(biāo)簽去承載文字.我就可以刪除...
強調(diào)一下.我們的get_tag()函數(shù)可以別放在body或者h(yuǎn)tml的onclick事件上.不然整個頁面的文字一點就刪除了....
get_tag()函數(shù)就綁定在你想刪除文字那塊div上.
以上這篇js獲取鼠標(biāo)點擊的對象,點擊另一個按鈕刪除該對象的實現(xiàn)代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JS在Array數(shù)組中按指定位置刪除或添加元素對象方法示例
- js刪除對象/數(shù)組中null、undefined、空對象及空數(shù)組方法示例
- JavaScript數(shù)組,JSON對象實現(xiàn)動態(tài)添加、修改、刪除功能示例
- JS實現(xiàn)對json對象排序并刪除id相同項功能示例
- 在Javascript操作JSON對象,增加 刪除 修改的簡單實現(xiàn)
- JavaScript數(shù)組Array對象增加和刪除元素方法總結(jié)
- js delete 用法(刪除對象屬性及變量)
- javascript動態(tài)添加、修改、刪除對象的屬性與方法詳解
- Javascript根據(jù)指定下標(biāo)或?qū)ο髣h除數(shù)組元素
- JS刪除對象中某一屬性案例詳解
相關(guān)文章
document.styleSheets[0].rules 與 cssRules區(qū)別
document.styleSheets[0].rules 與 cssRules區(qū)別...2007-08-08javascript實現(xiàn)點擊后變換按鈕顯示文字的方法
這篇文章主要介紹了javascript實現(xiàn)點擊后變換按鈕顯示文字的方法,可實現(xiàn)顯示一些按鈕如果點擊了,按鈕文本變?yōu)椤包c了”,其他按鈕文本變?yōu)椤皼]點”的效果,非常具有實用價值,需要的朋友可以參考下2015-05-05JS寫XSS cookie stealer來竊取密碼的步驟詳解
JavaScript是web中最常用的腳本開發(fā)語言,js可以自動執(zhí)行站點組件,管理站點內(nèi)容,在web業(yè)內(nèi)實現(xiàn)其他有用的函數(shù)。這篇文章主要介紹了JS寫XSS cookie stealer來竊取密碼的步驟詳解,需要的朋友可以參考下2017-11-11