2

Razor と jquery を使用して、mvc4 でホテル アプリケーションを開発しています。私のアプリでは、クリック イベントをページの 2 つのボタンにバインドし、クリックされたボタンに基づいて適切なアクションを実行しようとしています。しかし、私の問題は、どのボタンがクリックされたかを確認するにはどうすればよいですか? 私は両方のボタンのIDを持っています。私は試した、

Jqueryクリックされたボタンを見つけて、特定のIf elseステートメントを実行しますか? (初心者)

body タグを使用して両方のボタンをクリックイベントにバインドしたため、うまくいきませんでした。

    $("body").on("click","#Room1, #Room2", function (e) {
    if (counter> 0) {
    //stmts
    //stmts
    if ($('#Room1').data('clicked', true))
    //stmts
    }
    else {
    if ($('#Room2').data('clicked', true))
    {
    //stmts
    alert('Room1 clicked');
    }
    else
    {
    //stmts
    alert('Room2  clicked');
    }
    //stmts
    //stmts
    }
    });

(つまり)、両方のボタンについて、実行する一般的な stmts がほとんどないため、同じクリックにバインドしています。ただし、特定のボタンがクリックされたかどうかを確認し、他のいくつかの操作を実行する必要があります。

それらを個別にバインドし、ハンドラーを個別に定義できますが、いくつかの一般的な操作があり、コードを繰り返したくありません。

誰か助けてくれませんか?そこにはjqueryの専門家がたくさんいると確信しています..

前もって感謝します...

4

1 に答える 1

0

これは実際には非常に簡単です。メソッドでイベント委任を使用するonと、イベント ハンドラーのコンテキストが委任された要素になります。つまり、"#Room1, #Room2"セレクターにマッチした要素になります。非常に簡単に言えば、イベント ハンドラー内でまたは要素thisのいずれかを指します。#Room1#Room2

this.idその後、どの要素がクリックされたかを確認できます。

$(document.body).on("click","#Room1, #Room2", function (e) {
    alert(this.id + ' was clicked');

    // common code

    if (this.id === 'Room1') {
        // #Room1 code
    }

    if (this.id === 'Room2') {
        // #Room2 code
    }
});
于 2013-11-13T12:19:17.373 に答える