jQuery点击功能不在链接上触发

时间:2012-04-11 08:33:38

标签: jquery

我正在尝试添加一些导航箭头,允许用户转到列表中的下一个/上一个链接。

点击箭头时,我无法让jQuery触发下一个链接上的点击事件。

我已经使用addClass()设置了一个测试,我可以看到jQuery正在引用正确的链接,因为它将类添加到它,它只是不触发它上面的click事件。

HTML:

<ul class="menu">         
     <li class="active">
            <a href="#thelink#">Link text</a>
      </li>
      <li>
            <a href="#thelink2#">Link text 2</a>
      </li>
      <li><a class="next-page" href='#'>></a><li>
</ul>

jQuery的:

$jQ(".menu a.next-page").click(function() {         

  $jQ('.menu li.active').next().find('a').addClass('test');

  $jQ('.menu li.active').next().find('a').click();  

});

使用此代码,当我单击下一个箭头时,它会将类“test”添加到第二个列表项中的链接,但不会单击该链接。

4 个答案:

答案 0 :(得分:2)

这是一个非常复杂的例子(因为我不确定你的点击需要做什么)但是把它留在评论中似乎是不对的:

http://jsfiddle.net/MNczS/1/

var doStuff = function(obj) {
    alert("I did the stuff related to " + obj.attr('href') + "! Woot!");
};

$('a').not('.next-page').on('click', function(e) {
    e.preventDefault();
    doStuff($(this));
});

$(".menu a.next-page").on('click', function(e) {
    e.preventDefault(); 
    $nextAnchor = $('.menu li.active').next().find('a');
    doStuff($nextAnchor);
});​

愚蠢的doStuff()函数只代表点击时发生的事情。请注意,我将某些行为绑定到所有锚标记(下一页锚点除外!)和其他行为到下一页锚点。最终他们都做同样的事情:为有问题的物体开火doStuff。但理论上,你可以让他们在doStuff()的共享功能之前和/或之后做不同的事情。

答案 1 :(得分:0)

尝试使用它:

$jQ('.menu li.active').next().find('a')[0].click();

答案 2 :(得分:0)

使用“触发器”来触发您想要的任何事件 http://api.jquery.com/trigger/

$('li a.next-page').click(function() {
    $('li.active a').trigger('click');
});

所以基本上使用你的代码应该是

$jQ(".menu a.next-page").click(function() {         

  $jQ('.menu li.active').next().find('a').addClass('test');

  $jQ('.menu li.active').next().find('a').trigger('click');  

});

答案 3 :(得分:0)

有时点击不会触发尝试:

$jQ(".menu a.next-page").live("click",function() {           
  $jQ('.menu li.active').next().find('a').addClass('test');
  $jQ('.menu li.active').next().find('a').click();  
});

$jQ(".menu a.next-page").on("click",function() {           
  $jQ('.menu li.active').next().find('a').addClass('test');
  $jQ('.menu li.active').next().find('a').click();  
});