检测单击了哪个元素
Detect which element is clicked
简而言之,我将本地HTML页面加载到 asp.net 中其他Web表单内的div
中。
JQuery:
<script>
$(function () {
$("#includedContent").load("../HtmlHolder/index.html");
});
</script>
.HTML:
<div id="includedContent" class="WebHolder" style="width: 450px; height: 300px; border: 1px solid #808080; margin: 0px auto; overflow-y: scroll;"></div>
现在我想通过以下脚本单击它们来获取元素的类名:
<script>
$(document).ready(function () {
$('.WebHolder').on("click", "*", function (e) {
alert("Class :" + $(this).attr("class"));
});
});
</script>
我的问题是,当我单击任何元素时,此代码会提醒此类名,并且它是父级!
如何解决?
注意:元素不是特定的对象,可能是输入或按钮或文本区域或...
你应该使用e.target
(将此用作选择器)而不是this
(因为它是父级)
alert("Class :" + $(e.target).attr("class"));
要避免对父级执行操作:您可以比较this
和e.target
以验证它是否为父级。
if( this !== e.target )
演示的代码片段:
$('div').on('click', function(e){
if( this !== e.target ) alert( 'Class is '+ $(e.target).attr('class') );
});
div{
background: #fe7a15;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
I am the parent, Clicking me will not get you an alert but headers does, because they are my children.
<br /><br />
<h1 class="class-header-child-one">Header 1</h1>
<h2 class="class-header-child-two">Header 2</h2>
</div>
在事件处理程序中使用event.stopPropagation()
。
$('.WebHolder').on("click", "*", function (e) {
alert("Class :" + $(this).attr("class"));
e.stopPropagation();
});
这将防止事件在 DOM 树中冒泡。
演示:
$(document.body).on('click', '*', function(e) {
alert($(this).text());
e.stopPropagation();
});
div {
background: red;
}
div > div {
background: orange;
}
div > div > div {
background: yellow;
}
div > div > div > div {
background: gray;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Main
<div>1
<div>11</div>
<div>12</div>
<div>13
<div>131</div>
</div>
</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
相关文章:
- 对同一类中的所有元素单击一次
- 元素单击处理程序由一个神秘的函数取消设置
- 在处理元素单击事件期间,在循环内部调用window.open()
- JS-是否可以获得元素单击位置的确切宽度
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- 选中父元素单击上的复选框
- 在窗口和其他元素单击时隐藏
- Polymerjs 的自定义菜单元素单击事件
- 使用 javascript 函数查找元素单击的类
- 元素单击仅使用 javascript
- 等待文档鼠标按下完成,然后元素单击才能开始
- 由于父元素的顶部和位置,子元素单击不起作用
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 目标元素单击子元素,获取父属性
- 根据元素单击更改选择选项值
- 为listview上动态生成的元素单击event
- 扩展原生元素单击事件
- 可以被许多元素使用的Javascript函数,然后区分哪个元素单击了它
- 当元素单击时隐藏iframe
- 按钮元素单击事件以切换类不起作用