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のドキュメントを使用できますjQuery.trigger for this

于 2012-12-19T14:57:15.103 に答える
3

「jQueryだけでページ上のリンクをトリガーすることは可能ですか」に基づいて、ネイティブクリックイベントをトリガーすることを想定しています(投稿したコードの代わりに)。私がそれを正しく理解していれば、以下の答えが役立つかもしれません。

これはKarlSwedberg答えの完全なコピーです:

.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 に答える