<a href="javascript:foo(this)">通过Window,我想要标记
<a href="javascript:foo(this)"> passes Window, I want the tag element itself
我希望它打印"a",因为当我调用foo(this)
时,参数似乎是链接标记。
<script type="text/javascript">
function foo (e) {
alert (e .tagName);
}
</script>
<a href="javascript:foo(this)">click</a>
相反,它会打印"未定义"。如果我alert(e)
,它会显示"对象窗口"。如何让foo
知道是哪个元素启动了它?不传递/查找ID。
您不应该将href用于JavaScript。不好的做法是,使用onclick,this
会神奇地指向链接。
<a href="#" onclick="foo(this)">click</a>
您还需要取消链接的单击操作。使用return false或使用preventDefault取消事件。
最好使用Unobtrusive JavaScript 附加事件
你也可以直接这样做
<a href="#" onclick="alert(this.tagName);">click</a>
this
对象在所有浏览器中的处理方式并不相同。这是Prototype和jQuery等库试图规范化的众多项目之一。然而,也就是说,正如许多其他答案所指出的那样,大多数浏览器将在onclick
句柄上传递适当的this
(而不是href
)。如果您想适当地处理this
,您将需要执行本问题中详细介绍的操作。
其他方法是正确的,因为将javascipt放在href属性中确实是不好的做法。
但是我们并不总是完全控制我们必须维护和使用的库。尤其是第三方工具。
当没有其他选项时,我使用的技巧是将生成的ID作为注释添加到HREF的开头。然后使用JQuery搜索具有以ID开头的HREF属性的锚元素。
这是非常缓慢和低效的,但确实有效。
<a href="javascript:/*YourIdGoesHere*/ foo($('a[href^=''javascript:/*YourIdGoesHere*/'']')[0]); void(0);">click</a>
<script type="text/javascript">
function foo (a) {
console.log(a);
}
</script>
<a href="#" onclick="foo(this)">click</a>
function foo(obj) {
alert(obj.tagName);
}
不要调用元素e
,这是事件对象的标准。
JSfiddle DEMO
相关文章:
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "可以't查找变量:window“;在suds.js中
- "event=event|window.event”;找不到成员.RequiredFieldValidator
- 为什么"这个“;指的是javascript中forEach中的Window
- 什么是“-[1;平均值;if(!-[1,]&&!window.XMLHttpRequest)"
- window.safari.pushNotification.requestPermission总是返回"拒绝
- 如何在HTML、JS中重定向,如果用户关闭“;window.open()"-对话
- 这里有一种新型的广告javascript通过change"window.opener.location”;,我
- 为什么<车身负载=“;fn()">使用函数调用,但是window.onload=fn;使用处理程序函
- window.open()添加一个rel="nofollow”;属性
- 为什么“;window=window.parent"创建一个无限循环
- "闭合的“;属性异常返回“;window.open”;在JavaScript&歌剧
- jQuery替换所有href=""其中onclick=“;window.location=“;
- 需要HTML表单检查=“"在onclick=“;window.print()”;
- 命令“;window.location.href"不适用于HTML(引导框架)
- <a href="javascript:foo(this)">通过Window,我想要标记
- 可以't添加<script src=“"到使用Window.open().docent.writ
- Webkit通知中的JavaScript window.open()(和<a href="#"
- javascript:<车身负载=“">和window.onload
- 为什么href="javascript:window.location.href='#xxx'&q