jQuery事件.delegateTarget属性
delegateTarget
属性是jQuery中的一个事件对象相关属性。该属性返回事件委托的目标元素,即绑定事件的父元素(或祖先元素),即使事件是由其子元素触发。
语法
event.delegateTarget
用法
使用 delegateTarget
属性可以方便地处理事件冒泡时的处理。
例如,假设我们有如下 HTML 结构:
<div id="parent">
<button id="child">click me</button>
</div>
使用 delegateTarget
属性,我们可以进行如下事件委托:
$("#parent").on("click", function(event) {
console.log(event.delegateTarget); // <div id="parent">...</div>
});
$("#child").trigger("click");
当点击 button
元素时,事件会被冒泡到其父元素 div#parent
中,我们可以在父元素的事件处理函数中通过 delegateTarget
属性获取到该元素。
另一个示例:假设我们有如下 HTML 结构:
<ul id="nav">
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
</ul>
<div id="content"></div>
我们可以绑定 #nav
的 click 事件,通过 delegateTarget
获取点击的 <a>
元素,并使用其 href
属性来控制显示相应的内容。
$("#nav").on("click", "a", function(event) {
event.preventDefault();
console.log(event.delegateTarget); // <a href="#one">One</a>
$("#content").load(this.href);
});
以上代码展示了利用 delegateTarget
属性从事件冒泡中获取 <a>
元素及其 href
属性来加载相应的内容。
注意事项
delegateTarget
属性只有在事件处理函数内才能访问到;- 使用事件委托时,我们需要在父元素上绑定事件,而不是在子元素上。这样,当子元素被添加或删除时,我们不需要逐个重新绑定事件。
delegateTarget
属性仅在事件处理函数中可用。如果在事件处理函数外调用它,则返回undefined。
结论
delegateTarget
属性是jquery事件对象中非常实用的一个属性,可以方便我们获取委托的目标元素,从而快速地处理事件委托带来的问题。