2012-03-30 22 views
1

私のページには、ajaxを使用して行が増減する表があります。 行カウントが変更されたときに通知を受け取る行カウント変更イベントが必要です。私はいくつかのことを試しましたが、何も効果がありませんでした。jQuery行数変更イベント

$("#myTable tr").length.change(function(){ 
    alert("row count changed"); 
}); 

とも

$("#myTable tbody").change(function(){ 
     alert("table changed"); 
    }); 

が、行が増加/減少するとき、これらの関数が呼び出さ取得されていません。これは私が試したものです。 jQueryのchange()方法は、与えられたコールバックを結合するイベントですonChangeイベントは、<input><select>、および<textarea>要素(reference)に対してのみ有効であるため、

+2

ajaxの成功で関数を実行できますか? –

+2

あなたはおそらく、ajaxコールバックにコードを入れたほうがよいでしょう。 APIを持つライブラリの場合は、公開されている 'recordAdded'イベントなどがあるかどうかを確認してください。 – hyperslug

+0

答えをありがとう、私はしようとすると、私が使用しているajaxライブラリをチェックします。しかし、ちょうど私がjqueryを使ってそれをやりたければ、行数変更イベントを取得する方法はありますか? – bhuvan

答えて

2

があなたの変更イベントが呼び出されていないお勧めしてください。

特に、最初の例では数字にchange()を呼び出していますが、これはエラーを投げます。後者の例では、tbody要素でchange()を呼び出していますが、これはonChangeイベントをサポートしていません。

限り、実際にあなたが明示的にしょっちゅう行の数を確認するためにsetInterval()を使用することができます作品何か取得など:

setInterval(function(){ 
    if($("#myTable tr").length > 2){ 
    /* do stuff */ 
    } 
}, 1000); 

をこれは、行数が毎秒2以上であることを確認します。

可能であれば、私はこのアプローチをとっておらず、実際にAJAX呼び出しを行っている時点で神話的な「行変更」イベントで取るのと同じアクションを実行しようとします。あなたがコントロールまたはへのアクセスを持っていないことをオフのチャンスで$("#myTable tr").bind('my-custom-event', function(){ /* do stuff */ })

:どちらかといえば、あなたは、その後に耳を傾けることができ、各AJAX呼び出し(例えば$("#myTable tr").trigger('my-custom-event')、)の後に<table>要素に発射されるカスタムjQuery eventを作成することができますあなたの行を更新しているAJAX呼び出しを起動しているJavaScriptは、別の解決方法は、あなたのページでAJAXリクエストが正常に完了すると起動されるjQuery ajaxSuccess()イベントを調べることです。例:

$('body').ajaxSuccess(function(){ 
    if($("#myTable tr").length > 2){ 
    /* do stuff */ 
    } 
}); 
+0

こんにちはクリス、ありがとう。あなたは私のこの疑惑と他の多くのものをクリアしました。どうもありがとうございました。 Stackoverflow rocks !!!!! – bhuvan

関連する問題