0

イベントがバインドされているリンクと、バインドされていないリンクがあります。

これらのリンクには、選択ボックスの変更によってトリガーされるクリック イベントがあります。

このフィドルを参照してください

そのリンクにバインドされたイベントがない場合、jqueryがリンクにアクセスする方法はありますか?

選択ボックスの vlaue 属性内で URL を参照するのではなく、アンカー タグ内で URL を参照したい。

(疑似コード) のようなもの -

 if (link.hasEventHandler('click')){
    trigger click
 } else {
    window.location = link.attr('href')
 }

編集 - ここで行う必要があることを正確に行うプラグインがあります - https://github.com/sebastien-p/jquery.hasEventListener

ファイルサイズが問題なので、使用は避けたいです。

最新の jquery を使用しているため、.data('events') は使用できません

4

3 に答える 3

0

私の知る限り、JS では「偽のクリック」はできません。クリック イベント トリガーは単に onClick JS イベントをトリガーするだけであり、ブラウザー内のリンクのクリックを完全にシミュレートするわけではありません。ただし、href を取得し、JS を使用してそのページにリダイレクトするだけです。これを行ういくつかの行でフィドルを更新しました。

http://jsfiddle.net/9j8QS/1/

$('a:not(.event-bound)').click(function(event) {
    window.location.href = $(this).attr('href');
});

セレクターは、 class を持たないすべてのアンカー タグを選択しますevent_bound

于 2012-11-07T15:51:23.423 に答える
0

Twitter Bootstrap ( http://twitter.github.com/bootstrap/components.html#buttonDropdowns ) からドロップダウン ボタンを実装できます。Bootstrap を使用すると、ダウンロードをカスタマイズすることもできます。ドロップダウンのみを選択すると、〜40kbになります。すべて CSS であるため、jQuery も必要ありません。

于 2012-11-07T15:33:25.063 に答える
0

コードを見ると、コンボボックスで選択した値と同じ href 属性を持つリンクを選択する必要があります。何かのようなもの:

$('#nav').on('change', function(event) {
      var targetHref = $(this).find("option:selected").val();
      $('a[href="'+targetHref+'"]').each(function() {
           $(this).trigger('click');
      });
});

リンクのクリックイベントがあるとします。そうでない場合は、リンクに同じクラスを与え、そのクラスのクリック イベントを記述して、ウィンドウの位置をオブジェクトの href 属性に設定します。

于 2012-11-07T15:34:41.467 に答える