2017-10-08 3 views
0

多くのjsファイルを1つのファイルにマージするためにgulpを使用しています。 JSコードを追加する必要があるページごとに、コードを分けて保存するための新しいファイルを作成します。jQueryにグループリスナーがありますか?

私のアプローチの問題は、複数のフォームでHTML内のID名を再利用するときに間違ったイベントが間違った時間に発生し、問題が発生する可能性があります。

この問題が発生しないように、ほとんどの場合、セレクタのすべてをラッパーで開始します。例

$(function(){ 

    $('#create_reservation_form #type').change(function(e){ 
     // do stuff... 
    }); 

    $('#create_reservation_form #brand').change(function(e){ 
     // do stuff... 
    }); 

    $('#create_reservation_form #category').change(function(e){ 
     // do stuff... 
    }); 

}); 

私は、各セレクタの前に私のラッパーIDを繰り返す必要が完全に除いて上記の作業のために

。ラッパーIDを毎回書き直す必要がなくなる方法はありますか?次のコードは、与えられたIDでラップされている場合にのみ行うべきですか?あなたは、フォーム要素とチェーンに、任意の数を委任することができます

別の言葉で

、このような何かを行う方法がある(それは動作しませんので、コードの下に、この構文を作った)

$(function(){ 

    $('#create_reservation_form').group(function(){ 

     $('#type').change(function(e){ 
      // do stuff... 
     }); 

     $('#brand').change(function(e){ 
      // do stuff... 
     }); 

     $('#category').change(function(e){ 
      // do stuff... 
     }); 

    }); 

}); 
+1

'var group = $( '#create_reservation_form'); group.find( '#type')。change(function(e){.. ' – Keith

答えて

-1

on()または@Keithが変数として親オブジェクトを格納することによって示唆してfind()を使用するか、on()

$('#create_reservation_form') 
    .on('change', '#type', function(e) { 
     // do stuff... 
    }).on('change', '#brand',function(e) { 
     // do stuff... 
    }).on('change', '#category',function(e) { 
     // do stuff... 
    }); 

以上の組織明確にするための委任として実行します。

$('#create_reservation_form') 
    .on('change', '#type', typeChange) 
    .on('change', '#brand', brandChange) 
    .on('change', '#category', catChange); 

// since each file will include own `$(function()` wrapper can re-use 
// these function names since they will each be in own scope 
function typeChange(e){ 
    // do stuff for type input... 
} 

function brandChange(e){ 
    // do stuff for brand input... 
} 

function catChange(e){ 
    // do stuff for category input... 
} 
関連する問題