search

Home  >  Q&A  >  body text

javascript - jquery 模拟点击anchor

html 结构是这样的:

<p class="survey" id="k_1">
  <a href="#k_2">1</a>
  ...
  <input type="radio" id="inv_1">
</p>
...
<p class="survey" id="k_2">
...
</p>

我想点击radio button的时候,同事click那个anchor

$("#inv_1").on('click',function(){
  $(this).closest('.survey').find("a").click();
});

结果是没反应,如果我手动点击anchor的那个1时,能链接到下面的内容。 请大家帮忙看看大概什么原因。 谢谢

迷茫迷茫2836 days ago697

reply all(4)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 12:49:13

    <a href="#k_2"><span id="k_2_span">1</span></a> 
    
    $("#inv_1").on('click',function(){ 
      $(this).closest('.survey').find("#k_2_span").click(); 
      //or
      $(this).closest('.survey').find("a")[0].click();
    }); 
    

    reply
    0
  • 黄舟

    黄舟2017-04-10 12:49:13

    我给采纳的问题补充下,主要是针对这个

    $(this).closest('.survey').find("a")[0].click();
    

    下面这段代码,是我最近研究taobao加密链接跳转发现的.

     if (!window.attachEvent) {
    
                document.write('<input style="display:none" type="button" id="exe" value="" onclick="window.location=\''+unescape(qso.tu)+'\'">');
                document.getElementById('exe').click();
            } else {
    //只适用于IE和opera
                document.write('<a style="display:none" href="'+unescape(qso.tu)+'" id="exe"></a>');
                document.getElementById('exe').click();
            }
    

    结论

    如果是IE和opera, 可以直接对a对象直接调用click()

    其他浏览器不支持对a对象直接调用click()

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 12:49:13

    加上一个这个就好了,实测有效

    $('body').on('click', 'a', function() {
    location.href = $(this).attr('href');
    });
    

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 12:49:13

    使用jQuery的trigger方法:

    $("#inv_1").on('click',function(){
        $(this).closest('.survey')
        .siblings("a")
        .trigger('click'); // <<<<<<<<<<<<< 注意这里
    });
    

    reply
    0
  • Cancelreply