1

.change以下の関数が jQuery によって呼び出されているかどうかを判断する方法はあり.triggerますか?

    $('input[name=TransactionType]').change(function () {
        //Clear out values
        $('input:text').val('');
        $('input:text').text('');

        //Display input fields
        var radioValue = $(this);

        $('#RightDiv').children().each(function () {
            if (radioValue.attr('id') == $(this).attr('id')) {
                $(this).show();
            } else {
                $(this).hide();
            }
        });
    }).filter(':checked').trigger('change');
4

1 に答える 1

5

使用できますevent.isTrigger

 $('input[name=TransactionType]').change(function (e) {
    if(e.isTrigger){
      //This was triggered using trigger('change') or .change() etc
    }
 }

デモ

このフラグは、上記のようにトリガーされた場合にのみ設定されます。そうしないと、未定義になる可能性があります。ただし、ドキュメントを見つけることができません。

しかし、これはトリガー メソッドの jquery コードで設定されていることがわかります。

 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
 event.isTrigger = onlyHandlers ? 2 : 3;
于 2013-07-03T17:33:01.230 に答える