javascript - jquery 模拟点击anchor
迷茫
迷茫 2017-04-10 12:47:13
0
4
706

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时,能链接到下面的内容。 请大家帮忙看看大概什么原因。 谢谢

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
Ty80
<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();
}); 
黄舟

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

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

左手右手慢动作

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

$('body').on('click', 'a', function() {
location.href = $(this).attr('href');
});
左手右手慢动作

使用jQuery的trigger方法:

$("#inv_1").on('click',function(){
    $(this).closest('.survey')
    .siblings("a")
    .trigger('click'); // <<<<<<<<<<<<< 注意这里
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板