2012-03-29 22 views
3

私は2つのjqueryを実行していますが、それらを同じ行に結合したいと思います。 ここに私がしようとしているものの例があります。同時に2つのjquery関数があります

​$(function(){ 
    $('input').each(function(){ 
     if ($(this).is(':checked')) { 
      $(this).after('this is checked'); 
     } 
    }); 
    $('input').click(function(){ 
     if ($(this).is(':checked')) { 
      $(this).after('this is checked'); 
     } 
    }); 
});​ 

今、両方の機能は同じことを行う任意の入力がバックエンドからチェックされているが存在する場合、1をチェックするために実行され、他の一つは、単にユーザーのクリックに応答します。

私はこのような文でそれらを組み合わせることができれば、私は考えていた、

$('input').bind('each click'); 

が、私もこれはそれぞれに機能しないことに気づきました。 アイデア

ありがとうございます!

答えて

1

だけ

function handler() { 
    if ($(this).is(':checked')) { 
     $(this).after('this is checked'); 
    } 
} 

その後、両方の状況でそれを使用する...機能に名前を付ける:

$(function(){ 
    $('input').each(handler); 
    $('input').click(handler); 
});​ 
+0

これは素晴らしい作品です!ありがとう!! –

1

eachメソッドはイベントではないため、バインドすることはできません。

あなたはそれを再利用できるように、関数を変数に割り当てます。時々使用されている

​$(function(){ 

    var markChecked = function() { 
    if ($(this).is(':checked')) { 
     $(this).after('this is checked'); 
    } 
    }; 

    $('input').each(markChecked).click(markChecked); 
});​ 

別のアプローチは、初期チェックを強制するために、各要素にクリックイベントをトリガすることです:

​$(function(){ 
    $('input').click(function() { 
    if ($(this).is(':checked')) { 
     $(this).after('this is checked'); 
    } 
    }).click(); 
});​ 

もちろん、クリックイベントの発生には副作用がないものとします。別のクリックイベントハンドラを既に要素のいずれかにバインドしている場合は、そのイベントハンドラも呼び出されます。

+0

これはあまりにも素晴らしい作品!ありがとう! –

関連する問題