7
回答
请在js如何为元素添加特定的点击事件?
华为云实践训练营,热门技术免费实践!>>>   

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

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

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

举报
vcxiaohan
发帖于1年前 7回/476阅
共有7个答案 最后回答: 1年前
楼主,abc是什么?
--- 共有 2 条评论 ---
livend回复 @vcxiaohan : 感觉有点奇怪,给元素天添加个属性直观的:document.getElementById("xx").setAttribute("mark","marked") 1年前 回复
vcxiaohan为当前的click事件添加一个标记,删除了时候,可以指定删除click.abc,不会影响click.efg;比如:$('.a').off('click.abc');这样不会删除除了.abc的click事件 1年前 回复
建议你看一下JQuery的on事件的源码,就明白了。以前看过,好像是JQuery内部维护的有自己的事件列表,仅供参考,不100%确定
--- 共有 1 条评论 ---
vcxiaohan.. 1年前 回复

利用事件冒泡。

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



--- 共有 1 条评论 ---
vcxiaohan等等,我的意思是:为同一个对象绑定2个click事件,而我只想删除第一个click 1年前 回复

你说的这种是自定义事件,自定义事件,基本职能通过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);

--- 共有 3 条评论 ---
zabcd117回复 @vcxiaohan : eventTypeString叫什么是无所谓的,只是如果不是标准的dom事件名称,用户点击不会触发,比如你说的'click.abc',这样的事件用户点击的时候是不会触发这个事件的。 1年前 回复
vcxiaohan我思考一下,虽然不太明白,谢啦,能把abc加进去吗 1年前 回复
vcxiaohan你的示例跟click.abc有关联吗? 1年前 回复
//所有的与点击相关 需要执行的逻辑都在这里
<input abc=true aaa=false abb=true/>
function clickfun(_this){
   if(_this.abc){
      abc();
    }
  if(_this.aaa){
    aaa();
  }
}


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



顶部