jQuery click()没有点击?

时间:2010-06-28 06:47:31

标签: javascript jquery javascript-events

我认为jQuery的click()可以让我们添加一个处理程序或只是点击一个元素吗?

然而,我试过了:

$(function() {
    setTimeout(function() {
        $('a').first().trigger('click'); // or click(), the same
    }, 3000);
});

并等待3秒,它不会点击页面中的第一个<a>元素...怎么来的?

更新:这与What is the best way to make the Yahoo media player autostart, jQuery?有关,因此应该已经存在用于点击媒体的事件处理程序,那么.click()如何与{相同} {1}},没有触发该事件处理程序?

8 个答案:

答案 0 :(得分:11)

调用click()方法不会模拟单击链接。它会调用受影响元素上的任何click()个处理程序。这是一个微妙但重要的区别。如果您想模拟单击链接,则没有可行的跨浏览器方式来执行此操作。

答案 1 :(得分:2)

我最近遇到了类似的问题。没有任何反应的原因是因为锚标签没有jquery调用的“click”方法。例如,如果您将锚标记更改为<button></button>标记,则.click()将模拟用户按预期单击。

有一些“hacky”解决方法,但这取决于如何设置锚标记的事件处理程序。例如,如果锚标签href属性中有一些javascript,这将起作用(这恰好是我的问题的解决方案):

var lnk = $('a.mylink');
window.location = lnk.attr('href');

答案 2 :(得分:1)

我不确定,如果.first()是使用此功能的可能方式。你试过吗

$('a:first').click();

代替?如果.first()不存在,则会抛出错误,永远不会到达.click(),并且由于它存在于匿名函数中,您甚至可能根本看不到错误(无声地失败)。 / p>

答案 3 :(得分:1)

以下是模拟链接点击的方法(只要这些是普通链接):

location.href = $('a').first().get(0).href;

答案 4 :(得分:0)

如果您已有链接的事件处理程序,则可以使用trigger()方法:

$('a:first').trigger('click');

答案 5 :(得分:0)

你到底想做什么?链接通常用于重定向到新页面。因此,如果您需要重定向,请使用以下内容:

        $(function() {
        setTimeout(function() {
            window.location.replace("linkToNewPage.html");
        }, 3000);

    });

答案 6 :(得分:0)

  

“有一个选项.Plz检查   在这个页面   http://mediaplayer.yahoo.com/api/#example_usage   如果你设置autoplay = true,那就是第一首歌   将自动启动..“

- Kai

关于:

<强> What is the best way to make the Yahoo media player autostart, jQuery?


否则点击将点击处理程序附加到您想要的地方,例如:

$('#MyElementID').click(function() {
//How you want it to behave when you click it.
});

window.setTimeout(YourFunction, 3000);

function YourFunction {
//Your function that runs. Maybe fire the onclick handler?
}

答案 7 :(得分:-1)

您尝试将click()方法用于其他目的而非其目的。使用了click(),因此您可以捕获对特定元素的点击,而不是模拟

了解更多here