我有动态html生成的元素,我想引用当其中一个人可能正在调用它时调用该函数的特定href。
<a href="javascript:Foo(this)">Link</a>
当我尝试引用$(this)时不起作用。有没有其他方法可以做到这一点,还是我必须制作动态ID?
答案 0 :(得分:5)
<a href="javascript:Foo(this.href)">Link</a>
将起作用。
然而,html代码中的某些处理程序根本不是jqueryish。 为您的链接提供一个类并设置一个实时处理程序:
$('.mylink').live('click', function() {
// do whatever you want with this or $(this) or this.href or $(this).attr('href')
});
答案 1 :(得分:1)
将js部分放在href
属性中是一个坏主意。最佳做法是使用addEventListener
添加处理程序,但在这里您可以直接设置onclick
。
<a href="#" onclick="Foo(event);">Link</a>
你的功能就像
function Foo(e) {
var a = e.target || e.srcElement;
// TODO: stuff
if (e.preventDefault) {
e.preventDefault();
}
else {
return false;
}
}
因此,当您单击该链接时,将使用该事件作为参数调用Foo
。事件对象具有对source元素的引用,可以是标准浏览器中的target
,也可以是IE中的srcElement
。最后的preventDefault
/ return false;
组合可防止浏览器“关注”指向#的链接。
编辑:第二个想法,因为你有很多链接,使用jquery添加处理程序推荐的方式可能更好(虽然第一个解决方案仍然没问题)。
...
<a id="A5" href="#" >Link</a>
<a id="A6" href="#" >Link</a>
<a id="A7" href="#" >Link</a>
...
<script>
$('a').click(Foo);
</script>
答案 2 :(得分:-1)
使用javascript:
伪协议处理程序没有意义
使用
<a href="#" onclick="Foo(this);">Link</a>
代替。