$("a").trigger("click")不可以,$("a").get(0).click()可以

<a href="http://www.baidu.com">123</a>

$("a").trigger("click")不可以,$("a").get(0).click()可以
如果要让$("a")有效,则需要在a标签内用span包含文本

<a href="http://www.baidu.com"><span>123</span></a>

$("a span").trigger("click")
阅读 7.8k
6 个回答

~~这说明了自动触发事件的话,只能是针对一个dom元素,而不是一个集合。~~
这个问题我也遇到过,没有细究,有空回。

你知道这个API不起作用或不会用的时候,就应该查阅一下具体的API文档 trigger

Any event handlers attached with .on() or one of its shortcut methods are triggered when the corresponding event occurs.

As of jQuery 1.3, .trigger()ed events bubble up the DOM tree;

所以咯,<a> 链接没有通过jQuery的on等方法绑定事件,也就没有事件触发;而<span> 刚好是因为事件冒泡触发父元素

附: 请区分 jQuery的trigger() 和 triggerHandler() 这两方法。

具体代码示例:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>demo</title>
    
    <script src="jquery-1.11.3.min.js"></script>
    
    <script type="text/javascript">
    

    $(document).on("click", "a", function() {
        $(this).css("background-color","red");
        // 触发所有a标签的点击事件
        for(var i = 0; i < $(this).length; i++){
            $(this)[i].click();
        }
    });

    $(document).ready(function() {
        $("a").trigger("click");
    });
    </script>
</head>

<body>
    <a href="http://www.baidu.com" target="_blank">百度</a>
    <a href="http://www.weibo.com" target="_blank">微博</a>
</body>

</html>

$("a")是jq对象,$("a").get(0)是DOM原生对象

jquery trigger关于执行原生事件的具体代码如下图,

图片描述
可见它特意把(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) 的事件过滤掉了,不执行其原生点击事件,然而并不太明白这样做的具体考量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进