2011-09-23 25 views
13

多くの場合、ロードした後にイベントをトリガーした後(「変更」など)に、ビヘイビアをエレメントにバインドする必要があります。 私は最善の方法は、同じ行にそれを作ることであろうと思う:Jquery:バインドロード+変更を同時に実行

$('#element_id').bind('load, change', function() { 
... 
}); 

しかし、これは「負荷」の「変更」とはないために動作します。より良い方法がありますか?

+0

カンマを削除しましたが、とにかく動作しません。私は、ロードでいくつかの制限があると思う。 – max

答えて

36

私は同じ問題に出くわし。

$(document).ready(function(){ 
    $('#element_id').bind('load change', function() { 
     ... // (this DOESN'T get called on page load) 
    }); 
}); 

私はloadイベントが$(document).ready()前にトリガーを取得推測:カンマを削除すると、少なくともこのケースではない、十分ではありません。

これはシンプルなソリューションです:あなたは、イベントの機能を実行したいときすぐに、すでにロードされたコンテンツの

$(document).ready(function(){ 
    $('#element_id').bind('change', function() { 
     ... 
    }); 
    $('#element_id').trigger('change'); 
}); 
+0

これでも10億回の変更イベントがループされます。理由は分かりません。私はこの方法と他の方法を試してみました。 –

+0

あなたはこの機能の中でイベントを誘発していますか?それはループしてはならない、どこかのエラーがあるはずです。最小限のエラーケースを作成し、別の質問でコードを投稿することができます。あなたは "投稿"ボタンを押す前にそれを理解するでしょう。 :) – johndodo

+0

関数内ではトリガーしません。 $ {'employee_dropDown'} $ {'employee_dropDown'}。( 'change'、function(event){ var form = $(event.target).parents( "form"); form.submit(); } '変化する');あなたが上に置いたとしても、それはループするでしょう。 –

1

コンマを削除するだけでいいですか?

+0

追加するには:http://api.jquery.com/bind/ –

4

、あなたはトリガーを避けるために、独自の命名のカスタムイベントを使用することができます組み込みイベントのライブラリなどからの既存のバインディング

$(".my-selector").on("change rightnow", function() { 
    // do stuff... 
}).triggerHandler("rightnow");