1

私は中級の JS プログラマーであり、PHP とはまるで違います (特に、私が PHP でも OOP プログラマーではない場合)。

プログラミングを簡略化するために、jQuery で独自のイベントを定義することに興味があります。簡単な例を使用します。

多くの場合、テーブルにレコードの行があります。ユーザーは行を非アクティブにしたいと考えています。これが発生すると、行がフェードアウトして消えるようにシステムが設定されています。これを行うには、次の 3 つの方法があるとします。

  1. 非アクティブなアイコンを押す
  2. 行が強調表示されたヒットiまたは
  3. 右クリックして、コンテキスト メニューから非アクティブを選択します。

私がやりたいことは次のようなものです:

$('.datarow').on('rowinactive',function(){ /* etc */ });

上記の 3 つのアクションのいずれかが として設定さ$('#row12345').inactive、イベント ハンドラーがそこから取得します。状態と状態に関連するアクションとの間に多少の分離があるように見えます。

これが開始するための簡単な例であることを願っています。誰かがこれのサンプルコードを提供できますか?

4

4 に答える 4

5

たいていのイベントを定義できますが、そのようなイベントは何らかの方法でトリガーする必要があります。

$('.datarow').on('rowinactive',function(e, elem){
    alert(elem.id + ' is inactive');
});

$('table tr').on('click', function() {
    $(this).highlight();
    $('.datarow').trigger('rowinactive', this); // passes the element
});

トリガーされた関数に任意のパラメーターを渡すこともできます。

フィドル

于 2013-05-20T13:17:11.253 に答える
1
$(function(){
    $("input").on('customEvent',function(){ //define a custom event listener
        $("p").text("hello");
    });
    $("input").trigger('customEvent'); //call the event listener attached to obj. with name 'customEvent'
});

ここで再生できる例を作成しました。特定のオブジェクトによって収集された複数のオブジェクトにカスタム イベントを適用するために、このアイデアを拡張することができます$(...)。次に、各オブジェクトはユーザーとの相互作用が異なる可能性があるため、アクションを適切に呼び出すことができます。つまり、 でトリガーする可能性のある入力に対して、customEventclickのアクションinactiveなどをトリガーすることができます...

于 2013-05-20T13:14:34.787 に答える
1

マークアップがないと解決するのは少し難しいので、架空の「非アクティブ化」アイコンのみを使用して例を作成します。

$('.inactive-icon').on('click',function(){
    var $row = $(this).closest('.datarow');
    $row.fadeOut(500,function(){
        $row.trigger('inactive'); // ---> it's that simple!
    });
});

$('.datarow').on('inactive',function(){ /* etc */ });
于 2013-05-20T13:16:53.493 に答える