-1

現在、リンク用の jQuery のコードがあります。選択したリンクをクリックすると、ダイアログが開きます。

$('.dialog_link_add').click(function(){
    var row_id = $(this).parent().parent().attr('id');
    return false;
}

ダイアログは常にウィンドウを一番上にスクロールするため (Internet Explorer の場合)、プレーンな JavaScript を使用し、古い方法でメソッドを実装することで、これに対する解決策を見つけました。

onclick="function_call(this);return false;"

...しかし、それは機能していません。「this」パラメータを jQuery $(this) と等しくなるように送信するにはどうすればよいですか?

4

1 に答える 1

5

あなたが実際に尋ねた質問に対する答えは次のとおりです。 is の生の同等物です$(this)this、指定された の形式では、onclick関数に渡す引数になります。必要に応じて、その関数で引き続きjQueryを使用できます。要素を引数として受け入れて(それが渡し方であるため)、次のよう$()に使用できます。

function function_call(elm) {
    var row_id = $(elm).parent().parent().attr('id');
    // ...
}

しかし、完全に生の DOM::

function function_call(elm) {
    var row_id = elm.parentNode.parentNode.id;
}

さまざまな DOM 仕様と HTML5 API の詳細:

BUT : jQuery バージョンで同じ方法でスクロールを防止できます。

$('.dialog_link_add').click(function(){
    var row_id = $(this).parent().parent().attr('id');
    return false; // <<=============
});

jQuery ハンドラーでreturn falseは、次の 2 つのことを行います。

  1. デフォルトのアクションを防止します (したがって、フォーム内のリンクの場合#、ウィンドウはスクロールしません)。

  2. イベントが DOM をバブリングしないようにします。

DOM0 スタイルのハンドラー ( your onclick) ではreturn false、既定のアクションを防ぎますが、バブリングは停止しません。詳細についてreturn falseは、さまざまなタイプのハンドラを参照してください。 (編集された質問は、return falseもともとそこになかった jQuery ハンドラーの a を示しています。)

于 2012-07-05T09:44:34.233 に答える