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

$("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")

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


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


你知道这个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() 这两方法。


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


http://stackoverflow.com/questions/5811122/how-to-trigger-a-click-on-a-link-using-jquery
可以参考下这个问题


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


具体代码示例:


<!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>
【热门文章】
【热门文章】