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>
4

3 回答 3

7
$( selector ).click()

就像在jQuery 文档中一样:

当不带参数调用 .click() 时,它是 .trigger("click") 的快捷方式。

于 2012-12-19T14:59:28.660 回答
5

您可以jQuery.trigger for this 在此处使用 jquery 文档

于 2012-12-19T14:57:15.103 回答
3

基于“我是否可以仅使用 jQuery 触发页面上的链接”,我假设您想要触发本机点击事件(作为您发布的代码的替代方案)。如果我理解正确,那么您可能会发现下面的答案很有帮助。

这是Karl Swedberg回答的完整副本:

使用 .trigger('click') 不会触发原生点击事件。要模拟默认点击,您可以像这样绑定点击处理程序:

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

其中“someLink”是您选择的实际选择器。

然后,如果需要,您可以基于其他交互触发绑定的单击处理程序。

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

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

如果您觉得这有帮助,请务必为原作者投票。

于 2012-12-19T15:04:00.530 回答