jquery 如何触发div like< a>

fgw7neuy  于 2022-12-12  发布在  jQuery
关注(0)|答案(5)|浏览(160)

网站上有一个div框,并且有一个链接。我想单击容器以触发<a>

<a href="#">sapien sed</a>

但是当我点击容器div的时候,它没有响应或者是死循环,我怎么解决这个问题呢?就是说;我想单击div以触发<a>
整个代码:

<div class="container">
    <h2>Lorem ipsum dolor sit amet</h2>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse congue molestie venenatis.
        In adipiscing vulputate sem. Suspendisse potenti. Vestibulum nisl nibh, interdum sit amet pulvinar at,
        malesuada vitae lacus. Aliquam semper <a href="#">sapien sed</a> risus laoreet ultrices. Donec volutpat felis eu justo
        bibendum tempus. Donec non purus sed sapien fringilla tempor ut et metus. Nulla ipsum nibh, dapibus
        ac ornare vitae, fermentum nec nulla.
    </p>
</div>

<script type="text/javascript">
    $(function(){
        $("div.container").each(function(){
            var $container = $(this);
            $container.find("a:first").each(function(){
                var $link = $(this);
                $container
                    .css("cursor", "pointer")
                    .click(function(e){
                        $link.trigger("click");
                        return false;
                    });
                $link.bind("click", function(e){
                    e.stopPropagation();
                    return true;
                });
            });
        });
    })
</script>
bhmjp9jg

bhmjp9jg1#

问题是,你期望trigger("click")导致链接的默认行为发生(即,你期望链接被跟踪,并且它所链接的页面被加载)。然而,这不是trigger所做的。它所做的只是执行绑定到元素的click事件处理函数。
要真正跟随链接,您可以获取href并使用window.location

$link.bind("click", function(e){
   window.location = $link.attr("href");
   e.stopPropagation();
   return true;
});

这是一个updated fiddle

hjqgdpho

hjqgdpho2#

要同时触发标准“href”链接和带有onClick事件的链接:

$(function() { 
    $("div.container").each(function(){
        var $container = $(this);
        $container.find("a:first").each(function(){
            var $this = $(this),
                onClick = this.onclick || null;
            $container
                .css("cursor", "pointer")
                .click(function(e){
                    $link.trigger("click");
                    return false;
                });
            $link.bind("click", function(e){
                if ( !onClick ) {
                    window.location = $(this).attr("href");
                }
                e.stopPropagation();
                return true;
            });
        });
    });
})
yv5phkfx

yv5phkfx3#

$(document).ready(function(){
    $('div.container').css("cursor", "pointer").click(function(){
        window.location = $('a', this).first().attr('href');
    });
});
tvmytwxo

tvmytwxo4#

$("div.container").click(function()
{
  $('a:first', $(this)).click();
});
k4ymrczo

k4ymrczo5#

要确保这一点,请将函数添加到

$(document).ready(function() { });

否则div可能在代码运行之前无法加载。

相关问题