jQuery - target.href 与
我有一个 ajax 方法,可以劫持 HTML 和 preventDefault
中的每个链接,然后加载 loadPage
function()。
该方法适用于内部没有 的所有其他链接。但是,当
方法内有
时,
clickEvent.target.href
似乎不起作用。
此实例中的 var url
在控制台中返回未定义,但在任何其他链接上它返回 href
。
我猜我在这种情况下使用目标方法有问题?
$('#container a').click(function(clickEvent){
var url = clickEvent.target.href;
if(url.match(urlWebServer)) {
clickEvent.preventDefault();
loadPage(url);
}
});
<div id="user_img">
<a href="somepage.html"><img src="img_user/self.jpg" class="self" /></a>
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
是的,您不应该使用
clickEvent.target
因为它是被单击的目标。在您的情况下,目标不是a
,而是它包含的img
。事实上,事件会冒泡,因此您单击图像,
click
事件会传播到顶部(直到a
)并触发您提供的事件委托。解决方案是将该行更改为
Or 如果您更喜欢通过 jQuery 获取值,请使用
第一个更快。
解决方案是处理程序中的
this
引用您附加处理程序的 DOM 元素。所以this
将引用a
。Yes, you shouldn't use the
clickEvent.target
because is the target that was clicked. In your case the target isn't thea
but is theimg
it contains.Events in fact bubble up, so you click the image and the
click
event propagates to the top (up to thea
) and triggers the event delegate you provided.The solution is to change that line to
Or if you prefer to get the value through jQuery use
The first one is faster.
The solution is that
this
in the handler refers to the DOM element you attach the handler to. Sothis
will refer to thea
.如果您使用 jQuery 来选择和绑定,为什么不使用 jQuery 来完成其余的操作呢?
If you use jQuery to select and bind, why not use jQuery for the rest of your action?
这是因为
clickEvent.target
引用的是接收点击的元素,而不是附加了事件侦听器的元素。请改用this
,它对应于正确的元素。var url = this.href;
另请注意,您不需要执行
$(this).prop
或$(this).attr
>;您可以安全地访问锚元素的.href
属性,而无需创建另一个 jQuery 实例并调用另一个方法。That's because
clickEvent.target
refers to the element which received the click, not the element to which the event listener was attached. Usethis
instead, which corresponds to the correct element.var url = this.href;
Also note that you don't need to do
$(this).prop
or$(this).attr
; you can safely access the.href
property of an anchor element without needing to create another jQuery instance and call another method.target
是触发事件的实际元素,它可以是您附加到的元素的任何子元素。使用
this
来引用链接。The
target
is the actual element that event was triggered on, which can be any of the children of the element you attached it to.Use
this
to reference the link instead.