自動見積もりを作成する方法として、ユーザーがアイテム/価格のリストを選択/選択解除できるようにする次の JQuery があります。コードは次のようになります。
$('table.products > tbody > tr').click(function(){
if ($(this).find('div.price').is(":visible")) {
$(this).find('div.price, img.selected').fadeOut(100);
} else {
$(this).siblings('div.price, img.selected').fadeIn(100);
}
recalc();
});
実際にはそれよりも複雑です(したがって、使用していない理由がありますtoggle()
が、上記はこの質問の目的のための単純化された例です.
とにかく、上記のコードは正常に動作します。表の行をクリックすると、価格がすでに表示されているかどうかに応じて、価格と画像が選択/選択解除されます。
次に、最後に呼び出される関数への呼び出しがありrecalc();
ます..次のようになります(これも簡略化されたバージョンです):
function recalc() {
var numOfProducts = $('table.products div.price:visible').length;
alert(numOfProducts);
}
ここで私が抱えている問題は、何かが変更される前にアラートが常に正しい値を返すことです。
たとえば、div.price
表示されていない場合に 1 つを選択すると、1 つが表示されますが、アラートが表示されます0
。1
次に、別のものを選択すると、2が表示されますが、クリックしたときのアラートのみが表示されます。次に、選択を解除するために既にクリックしたアイテムの1つをクリックすると、それが表示されます2
それで、私の質問は、他のすべてが行われた後に関数呼び出しが確実に行われるようにするにはどうすればよいですか?