使用jQuery点击链接

6

我希望能用jQuery触发页面上的链接,但是不知道如何操作。

JS

var vars = [], hash;
  var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  for(var i = 0; i < hashes.length; i++)
  {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
  }

  $('a.more').each(function() {
    var self = this;

    if (vars['deeplink'] == 'true') {
       /* this must trigger the link and that will trigger $(self).click */
    }

    $(self).click(function() {
      var theid = self.href.split('#').pop();
      var row = document.getElementById('info-art' + theid);
      var now = typeof(row.style.display) != 'undefined' ? row.style.display : 'none';
      $('tr.info').each(function() { this.style.display = 'none'; });
      if (now == 'none') {
        row.style.display = $.browser.msie ? 'block' : 'table-row';
      }
    });
  });

HTML

<td><a class="more" href="#8714681006955">[+]</a></td>
3个回答

7
$( selector ).click()

就像在jQuery文档中所述:

当没有参数调用 .click() 时,它相当于 .trigger("click") 的快捷方式。


1
触发函数只会触发事件,不会执行原生操作(导致浏览器跳转到点击的链接)。请参见支持和贡献部分中的第一个评论。 - JDB
3
@Cyborgx37的原始代码没有导航到任何地方,所以你的评论是无关紧要的。 - Magicmarkker

5

你不会在绑定之前尝试触发某些东西(就像上面的代码所暗示的那样)吧?$(self).click(...)需要被分配以便通过.trigger()调用。 - Brad Christie
请纠正我,但触发器函数难道不只是触发事件吗?我认为它不会执行操作(导致浏览器导航到单击的链接)。请参见支持和贡献部分中的第一个评论。 - JDB
我尝试添加 $(self).trigger('click'); 但它没有触发链接。 我做错了什么吗? - Ladineko
触发器确切地执行他要求的操作。他从来没有提到需要导航到点击的链接... - Magicmarkker
@Ladineko 你可能需要重构整个代码,改用触发器来代替你现在的方式。 - Magicmarkker
1
@Magicmarkker 我刚刚稍微调整了一下触发器,似乎已经让它正常工作了...我尝试了 $(self).trigger('click'); 但是没有效果。在加入 $('a.more').trigger('click'); 后,它似乎成功触发了链接。 - Ladineko

3
根据“如何使用jQuery触发页面上的链接”这个问题,我认为您希望触发本地点击事件(作为您发布的代码的替代方案)。如果我理解正确,那么您可能会发现下面的答案有所帮助。
这是Karl Swedberg答案的完全复制。

Using .trigger('click') will not trigger the native click event. To simulate a default click, you can bind a click handler like so:

$('#someLink').bind('click', function() {
  window.location.href = this.href;
  return false;
});

where "someLink" is an actual selector of your choice.

You can then trigger that bound click handler if you want, based on some other interaction.

$('input.mycheckbox').click(function() {
  if (this.checked) {
    $('#someLink').trigger('click');
  }
});

http://api.jquery.com/trigger/#comment-48277488

如果您觉得这篇文章有帮助,请确保给原作者点赞。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接