如何使用JQuery点击锚点,使得href也被调用?

3

我有一个锚点和一个文本框,如下所示:

 <div id="container">
        <input type="text" id="textBox" />       
        <a id="anchorTest" href="javascript: alert('inside anchorTest')">Click me</a>
    </div>

我正在尝试在按下回车键时将默认按钮设置为锚点:

$(document).ready(function () {

            $('#anchorTest').click(function () {
                alert('clicked');
            });

            $('#container').keyup(function (e) {

                if (e.keyCode == 13) {                    
                    $('#anchorTest').triggerHandler('click');
                }
            });
        });

但是锚点href中的javascript从未被调用?

如何使用JQuery点击锚点,以便也调用href?

我使用了下面的代码,它起作用了,但有没有更好的方法,因为它会提交表单,而我想要一个纯javascript代码:

window.location = $('#anchorTest').attr('href');   

谢谢


1
不应该将js放置在href中,应该改用onClick。另外我不明白你在问什么。你希望在文本框按下回车时发生与点击链接相同的事情? - OptimusCrime
有兴趣的人可以点击此链接:http://jsfiddle.net/KhYtF/ - Halil Özgür
@Halil:谢谢,这解释了问题。 - The Light
3个回答

4

jQuery以一种“特殊”的方式处理锚标签上的click事件。有关详细信息,请参见此问题 - 如果我没有使用bind或click绑定事件处理程序,我可以调用jquery click()来跟随<a>链接吗?

从上面的问题中 -

我进行了一些研究,发现 .click 不应该与 'a' 标签一起使用,因为浏览器不支持使用 JavaScript 进行“虚拟点击”。我的意思是,你不能用 JavaScript “点击” 一个元素。对于 'a' 标签,您可以触发其 onClick 事件,但链接不会更改颜色(到已访问链接颜色,大多数浏览器默认为紫色)。因此,使 $().click 事件与 'a' 标签一起工作是没有意义的,因为转到 href 属性的操作不是 onClick 事件的一部分,而是硬编码在浏览器中。


不仅仅是 JQuery,使用 DOM 也可以产生相同的效果。 - The Light

0
将您的“triggerHandler”更改为“trigger”,看看是否解决了您的问题。
我认为triggerHandler绕过了标准行为,并在您的情况下执行未设置的“onclick”事件处理程序。

0

不,当我在文本输入框内按下回车键时,它没有显示“inside anchorTest”。[Chrome 14] - Halil Özgür
是的,那只是解释了问题而没有提供解决方案。 - The Light

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接