我应该用“this”吗?或“;event.target"在javascript
Should I be using "this" or "event.target" in javascript?
我在下面创建了一个简单的div演示,一旦单击,将显示无。
<div id="three" onclick="toggle2(event);return false;" style="background:#303; color:#FFF;">
function toggle2(e) {
var textx = (e.target) ? e.target : e.srcElement;
textx.style.display = "none";
console.log(e.target);
}
我的问题是如果我替换
会有什么不同<div id="three" onclick="toggle2(event);return false;" style="background:#303; color:#FFF;">
<div id="three" onclick="toggle2(this);return false;" style="background:#303; color:#FFF;">
它们都可以很好地用于我上面的例子.....
很可能它们完全相同。这取决于HTML。在这种情况下,this
总是是div
元素。this
是指捕获事件的元素。而event.target
则指向事件发生的元素。
如果元素没有子元素,则它们总是相同的。但是,如果您有这样的内容:
<div id="three" onclick="toggle2(event);return false;" style="background:#303; color:#FFF;">
<span>Line 1</span>
Line 2
</div>
则它们可能是不同的。点击Line 1
会导致event.target
成为span
元素,所以只有这个元素会被隐藏。
除非您特别希望指向事件起源的元素,否则使用this
更直观。
当"e"是传递参数的事件时,通常使用e.target
当您将this作为参数传递时,这是对包含javascript方法的DOM节点的引用。这里,"this"引用的是div
当你在div上有一个点击事件时,当你点击它时,它被认为是一个事件,这就是为什么this和e.t artarget都能工作的原因
此外,"this"将始终指向div,而"e.t artarget "将指向您在div中单击的元素。
我认为没有必要传递this
作为onclick事件的参数,您可以使用this
直接到函数
事件表示当前正在触发的事件。现在,在浏览器中,事件从触发事件的元素冒泡到其父元素,直到到达文档根节点。更多关于:什么是事件冒泡和捕获?
在您的示例中,事件指向单击事件和事件。target是div,而this是指div本身。如果您将子元素添加到div并单击该元素,则事件。target指向子元素,而这个仍然指向div。相关文章:
- jQuery event.target is_a_child_of(element)
- 面料:“;鼠标:向下”;在event.target中未返回对象
- 使用event.target.classlist区分按钮颜色
- AngularJS复选框通过$event.target更改问题
- 当event.target返回子元素时,如何只获取click事件的父元素
- 如何使用event.target访问特定子项及其文本
- Javascript, target.id and event.srcElement.id
- 获取'event.target.id'作为字符串
- 火狐浏览器与 event.target.id 的问题
- 如何使用angularJS和jqlite测试event.target.hasClass()
- react-click event has empty event.target
- event.target.id 不在火狐上工作
- event.target在手机上的工作方式是否不同
- 无法获取使用 event.target.id 触发事件的输入 ID
- 为什么我的 event.target 数据在 chrome 中不起作用
- event.target 未提供所需的输出
- event.target 中未在 Firefox 中定义,在 IE 中出现小错误
- 无法记录 event.target(使用 Chrome)
- Javascript 错误:TypeError:“null”不是 safari 上的对象(评估“event.target
- internet explorer and target event