请在js如何为元素添加特定的点击事件?

vcxiaohan 发布于 2016/06/27 10:52
阅读 667
收藏 0

是这个意思,jq里面不是可以$('.a').on('click.abc', function(){})这样吗

我想知道,js怎么添加类似abc的效果?

document.querySelector('.a').addEventListener('click', function(){})这样不能加abc,请问怎么实现呢?

加载中
1
追梦的青春
楼主,abc是什么?
livend
livend
回复 @vcxiaohan : 感觉有点奇怪,给元素天添加个属性直观的:document.getElementById("xx").setAttribute("mark","marked")
v
vcxiaohan
为当前的click事件添加一个标记,删除了时候,可以指定删除click.abc,不会影响click.efg;比如:$('.a').off('click.abc');这样不会删除除了.abc的click事件
0
liuleidefeng
liuleidefeng
建议你看一下JQuery的on事件的源码,就明白了。以前看过,好像是JQuery内部维护的有自己的事件列表,仅供参考,不100%确定
v
vcxiaohan
..
0
黄明就
黄明就

利用事件冒泡。

document.querySelector('body').addEventListener('click', function(e){
  if(e.target.className == 'abc'){
    //点击执行代码
  }
});



v
vcxiaohan
等等,我的意思是:为同一个对象绑定2个click事件,而我只想删除第一个click
0
zabcd117
zabcd117

你说的这种是自定义事件,自定义事件,基本职能通过dispatchevent来触发,而dom事件,可以用户直接触发,也可以通过代码dispatchevent来触发,标准的dom eventType就是你我们常用的'click', 'dblclick', 'keyup', 'keydown'这种。

你说的'click.abc'这种就属于非标准的eventType,这种只能通过代码来触发,也就是类似jq的trigger。参考下面的代码:

function myEventHandler(e){
  console.log(e);
}

var ev = new Event("look", {"bubbles":true, "cancelable":false});
document.addEventListener('look', myEventHandler)
document.dispatchEvent(ev);

zabcd117
zabcd117
回复 @vcxiaohan : eventTypeString叫什么是无所谓的,只是如果不是标准的dom事件名称,用户点击不会触发,比如你说的'click.abc',这样的事件用户点击的时候是不会触发这个事件的。
v
vcxiaohan
我思考一下,虽然不太明白,谢啦,能把abc加进去吗
v
vcxiaohan
你的示例跟click.abc有关联吗?
0
就是个精虫上脑的地方
就是个精虫上脑的地方
可以换一种思路  你也不用删除那个click方法 在方法里判断能不能执行不就结了?
0
heartwalker
heartwalker
把绑定的函数拿出来, 起个名字不就好了
0
胡萝卜炒肉
胡萝卜炒肉
//所有的与点击相关 需要执行的逻辑都在这里
<input abc=true aaa=false abb=true/>
function clickfun(_this){
   if(_this.abc){
      abc();
    }
  if(_this.aaa){
    aaa();
  }
}


你只要控制 _this的属性就可以了



返回顶部
顶部