0

ボタンからクリックするか、入力から「Enter」キーを押して押すことができる機能を取得しました。

以下のコードを参照してください

function submit(){
   var tr = obj.closest('tr');
   var some_id = tr.attr('some_id');
}


$(document).ready(function(){

    $('#somebutton').click(submit);
    $('#some_text_input').live('keydown', function(event){
        if (event.keyCode==13) {
            submit($(this));
         }
    });
});

質問は、関数「送信」を呼び出して、そのオブジェクトを $(this) として呼び出すことができる関数にオブジェクトを渡す方法です。

ご協力いただきありがとうございます

4

3 に答える 3

0

obj を引数として追加します。

function submit(obj){
    var tr = obj.closest('tr');
    var some_id = tr.attr('id'); // my guess is that you want the id attribute instead of 'some_id'
}
于 2012-08-28T07:00:11.773 に答える
0

実際には、 as を使用するためにパラメーターを渡す必要はありません$(this)this関数を呼び出す場所に応じて、コンテキストが変化します。のような jQuery イベント内で関数を呼び出している場合clickthisは DOM 要素と$(this)jQuery オブジェクトを参照します。

function submit(){
   var tr = $(this).closest('tr');
   var some_id = tr.attr('id');
   alert($(this));
}

$('#somebutton').click(submit); // will alert `#somebutton` jQuery object

ところで、live非推奨です。使用することをお勧めしますon

于 2012-08-28T07:03:20.160 に答える
0

thisネイティブではない方法で使用するのは適切なアイデアではないと思います。関数はイベントから呼び出されるため、最も簡単ですが厄介な方法は、通常どおり $(this) を使用することです。

または、関数で値を取るパラメーター obj を定義するだけでもかまいません。$(this)

function submit(obj)
{
    var tr = obj.closest('tr');
    var some_id = tr.attr('id');
}

また、「何らかのID」ではなく、実際には「ID」または「クラス」.attr()の属性の名前とともに使用する必要があります。

于 2012-08-28T07:04:08.260 に答える