0

我想知道当我的 url 包含字符串时,是否有办法用 jQuery 模拟按钮单击?

当您访问我的页面时,通过 url 传递了一个锚点,只有我不能将用户直接带到这个锚点,因为它使用滚动路径插件,所以我想模拟一个被点击的导航链接......

这可能吗?

if(window.location.href.indexOf('group') > -1) {
    $('nav ul li a.group-btn').click();
};
4

3 回答 3

1

我不认为您可以在重定向的意义上模拟点击锚点;如果可以的话,我知道它没有得到广泛支持,因为它在 iPad 上是不可能的。但是,您可以window.location以类似的方式更改。您还需要记住是否有其他click事件绑定到您可能想要手动触发的锚点。

if (window.location.href.indexOf('group') > -1) {
    window.location = $('nav ul li a.group-btn').attr('href');
};

哈克选项

免责声明...除 Chrome 外,未在任何浏览器中进行测试。

nbrookes交谈后发现,您可以触发和模拟单击事件,但不能通过单击链接,而是通过单击锚点内的图像。这导致事件冒泡,并且实际上触发了点击事件,就好像用户点击了它一样。

jsFiddle代码

$(function() {
    // clicking this will trigger the click, but no re-direct
    $('#trigger').click(function() {
       $('#google').click(); 
    });

    // clicking this will actually re-direct... who knew!
    $('#hack').click(function(e) {
        e.preventDefault();
        $('<img />').appendTo($('#google')).click();
    });

    $('a').click(function() {
       $('#click-log').append('<li>#' + $(this).attr('id') + ' clicked</li>'); 
    });
});
于 2013-02-18T13:39:02.243 回答
0

Click event will not do the navigation as you click on anchor.

See your solution in the jsFiddle example.

<div id='srcLinks'>
<a href='#group'>Success</a>
<a href='#'>Failure</a>
</div>

<a id='tgtLink' href='http://google.com' target='_blank'>target link</a>

and

$(function(){
    $('#srcLinks a').click(function(e){
        e.preventDefault(); // this will prevent default navigation using the href of the link
        if($(this).attr('href').indexOf('group') > -1)
        {
            // If you want to open the link in new tab
            window.open($('#tgtLink').attr('href'));
            // If you want to open the link in same window
            window.location = $('#tgtLink').attr('href');
        }
    });
});
于 2013-02-18T14:01:10.437 回答
0

Yes you are correct it is possible to explicitly call click for a button

$("#other").click(function() {
   $("#target").click();
});

refer http://api.jquery.com/click/

Fiddle

于 2013-02-18T13:40:34.270 回答