如何在元素中处理鼠标事件,但不能在其子元素上处理
How do I handle a mouse event within an element, but not on one of its children?
我想在父元素上以一种方式处理mousedown
事件,但如果事件发生在该父元素的子元素上,则以不同的方式处理。
此:
$('.parent').on('mousedown', function(){
//stuff
});
如果单击.parent
中的任何元素,就会触发该函数,但我只想在父元素是唯一被单击的元素,而不是它的子元素时触发该函数我该怎么做
将处理程序绑定到子元素,并在子处理程序中使用event.stopPropagation()
。这样事件就不会突然出现在家长面前。
只需检查事件目标是否与jQuery的this
引用相同:
$('.parent').on('mousedown', function(e){
var child = $('.child-selector');
if(e.target === this)
// Run parent code
if(e.target === child[0])
// Run child code
});
这是jQuery文档中提出的缓解事件冒泡问题的建议。这也不需要为每个子元素添加一个带有stopPropagation()
的处理程序,如果有很多子元素,这将特别乏味。
您可以在事件中添加IF检查来验证事件的位置。类似于:
$('.parent').on('mousedown', function(e) {
if( e.target !== this )
return;
//...do your stuff stuff..
});
本质上是说,如果e.target与target不相同,那么您单击了父对象旁边的某个内容。。。
相关文章:
- 如何使用jquery处理php循环通过元素
- 处理表行的当前子级,而不是名称或类的所有元素
- 在MVVM视图模型中处理应用程序范围的元素
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- stickyfloat无法处理绝对定位的元素
- SVG元素——处理和选择文本
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- jQuery on('单击',..)未处理附加的元素
- 如何使用角度事件处理程序引用输入元素的值
- d3与svg在处理元素时的对比
- 基于类附加点击处理程序,只要元素获得该类
- Meteor - 从另一个模板事件处理程序访问 DOM 元素
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 在动态创建的元素中包含参数的事件处理程序
- 在处理元素单击事件期间,在循环内部调用window.open()
- 在Javascript中处理元素和使用Jquery Remove方法删除元素之间有什么区别
- 在AngularJS中处理元素大小调整
- 处理元素后面的鼠标事件
- Javascript -需要使用泛型类处理元素
- 处理元素上的单击,但不处理该元素内链接上的单击