0

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

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

我已经使用 addClass() 设置了一个测试,我可以看到 jQuery 引用了正确的链接,因为它向其中添加了类,它只是没有触发它的点击事件。

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

});

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

4

4 回答 4

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

于 2012-04-11T09:06:51.770 回答
0

尝试使用这个:

$jQ('.menu li.active').next().find('a')[0].click();
于 2012-04-11T08:38:29.677 回答
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();  
});
于 2012-04-11T10:06:23.790 回答
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');  

});
于 2012-04-11T09:36:03.390 回答