我有一个人员搜索脚本,在您键入时显示建议。结果的结构大致如下:
<div id="peopleResults">
<div class="resultHolder">
<div data-userid="ABC123" class="person">
<div class="name">Last, First</div>
<div class="title">Job Title</div>
<a class="email" href="mailto:person@company.com">person@company.com</a><span class="phone">12345</span>
</div>
<!-- more people... -->
</div>
</div>
由于人员列表会随着您的键入而改变,到目前为止,我使用jQuery的live()函数自动将click事件绑定到所有的.person元素。这是不推荐的和糟糕的做法,所以我正在尝试更新代码。
我觉得我需要这样的东西:
$('#peopleResults').on('click', '.person', function(){
// handle the click
})
但是我想更多地了解一下如何在vanilla JavaScript中处理这个问题。我以为当点击带有click事件的项的子项时,该事件会通过元素“冒泡”向上,当它击中.Person元素时,我就能抓住它。请原谅这些草率的代码,但类似于:
document.getElementById('peopleResults').addEventListener('click', function(e){
if(e.target.classList.contains('person')) {
// handle click
}
});
这似乎是一些基本的东西,只是没有点击在我的大脑。在JavaScript中处理这个问题的典型方法是什么?
您可以将所需目标的所有子目标的pointer-events
设置为none
:
.person > * {
pointer-events: none;
}
这样,event.target
将是一个.person
元素,而不是它的一个后代元素。
js prettyprint-override">document.getElementById('peopleResults').addEventListener('click', function(e){
if(e.target.classList.contains('person')) {
alert('Person clicked');
}
});
.person > * {
pointer-events: none;
}
<div id="peopleResults">
<div class="resultHolder">
<div data-userid="ABC123" class="person">
<div class="name">Last, First</div>
<div class="title">Job Title</div>
<a class="email" href="mailto:person@company.com">person@company.com</a><span class="phone">12345</span>
</div>
<!-- more people... -->
</div>
</div>
我有一张卡片,它由页眉、正文和页脚组成,可以由更多节点组成,如标签、文本字段等。 我需要抓住鼠标点击事件的任何时间,当点击发生在卡内,无论它是卡本身还是其子卡之一。现在,如果我单击文本字段,事件不会被触发。 就像上面的例子一样,如果我单击文本字段来键入某些内容,未打印。
问题内容: 在我正在从事的新项目中,我开始使用组件而不是指令。 但是,我遇到一个无法找到具体标准方法的问题。 从孩子向父母通知事件很容易,您可以在下面的我的plunkr上找到它,但是从父母向孩子通知事件的正确方法是什么? Angular2似乎通过使用以下方法解决了此问题:https ://angular.io/docs/ts/latest/cookbook/component-communicat
问题内容: 我目前正在使用jQuery使div可点击,在这个div中我也有锚点。我遇到的问题是,当我单击某个锚点时,两个单击事件都已触发(对于div和锚点)。如何在单击锚点时防止div的onclick事件触发? 这是损坏的代码: JavaScript 的HTML 问题答案: 事件冒泡到DOM中已附加单击事件的最高点。因此,在您的示例中,即使div中没有其他可显式单击的元素,div的每个子元素也
注意 目前仅 Weex Native(Android 和 iOS)支持,web 端 暂时不支持此项特性. 如果你是个 web 开发者,你大概对浏览器事件冒泡机制已经很熟悉了,而且可能认为 Weex 默认会支持事件冒泡。然而,Weex 在 0.13 之前是不支持这一特性的,在 0.13 版本,Weex 提供了这项支持。 概念 以点击事件为例,比如一个点击事件发生在某个 <video> 元素上,这个元
事件指一个用户操作,如按键、点击、移动鼠标等,也可以是系统生成的通知。当事件发生时,应用需要对其作出相应的反应,如中断。另外,事件也用于内部进程通信。 通过事件使用委托 事件生成于类的声明中,通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用于发布事件,称为发布器类。其他接受该事件的类称为订阅器类。事件使用的是发布-订阅(publisher-subscriber)模型。 发布器是一
jd.offAppHide(function callback) 取消监听小程序切后台事件 (基础库1.10.8开始支持) 参数 function callback 小程序切后台事件的回调函数 调用示例 jd.offAppHide(function(e){ console.log("监听offAppHide,",e); }) jd.offAppShow(function callback