0

タグをレンダリングするフォーマットされた列である 1 つの列を持つ jqGrid がありますanchor。アンカー タグの呼び出しに関連付けられたクリック ハンドラpreventDefault()

また、グリッドに登録されたイベント ハンドラーもあり、ユーザーがタグが表示されるonCellSelect列内の任意の場所をクリックすると、意味のある処理を実行します。anchor

私がしたいのは、anchorタグを表示することですが、クリックするonCellSelectと、グリッドに登録された基になるハンドラーを起動する必要があります。

ただし、これは機能しません。

ここにある jsFiddle の例を参照してください

ここには、バブル イベントを発生させる jsFiddle があります。

何がうまくいかないのかわからない。

4

4 に答える 4

0

これはややハックですが、機能します。

$("#grid").delegate(".logDetailsDialogClass",'click', 
   function(e) {
      alert('link clicked');
      e.preventDefault();
      $(this).parent().trigger("click");
   });

引き続き使用できますが、使用しないことをお.live勧めします。私が追加したのは$(this).parent().trigger("click");

于 2012-12-13T15:27:09.943 に答える
0

別のイベントをクリックしたときに別のイベントをトリガーするには、トリガー関数を使用できます

$('.anchorClass').live('click', function(e){
     e.preventDefault();

     // get the current cell
     var $cell = $(e.target).parent('div');

     $($cell).trigger('onCellSelect');

});

このフィドルを参照して、あるイベントを別のイベントからトリガーする方法を確認してください

于 2012-12-13T15:28:30.687 に答える
0

ここでいくつかのことを混乱させています(jQueryのドキュメントを読んでください)

event.preventDefault(): このメソッドが呼び出された場合、イベントのデフォルト アクションはトリガーされません。 event.stopPropagation(): イベントが DOM ツリーをバブリングしないようにして、親ハンドラーにイベントが通知されないようにします。
event.stopImmediatePropagation(): 残りのハンドラーが実行されないようにし、イベントが DOM ツリーをバブリングしないようにします。

また、 および に関する追加の注意事項を読む必要があり.stopPropagation()ます.stopImmediatePropagation()

その他の注意事項:

  • この.live()メソッドは、ドキュメントの先頭に伝播したイベントを処理するため、ライブ イベントの伝播を停止することはできません。同様に、 によって処理さ.delegate()れるイベントは、委譲先の要素に伝達されます。DOM ツリー内のその下の要素にバインドされたイベント ハンドラーは、委任されたイベント ハンドラーが呼び出されるまでに既に実行されています。したがって、これらのハンドラーは、委任されたハンドラーが呼び出しevent.stopPropagation()または戻りによってトリガーされるのを防ぐことができfalseます。
于 2012-12-13T15:31:43.150 に答える
0

を削除してanchorsに置き換えることをお勧めしspansますか?どこかにリンクする必要がある場合は、CSS と Jquery を組み合わせてanchorアクションをシミュレートできます。

于 2012-12-13T15:36:07.687 に答える