私が恐れている最も明確に作成されたタイトルではありません。
私のWebサイトには、クエリの最初の6つの結果を最初にロードし、画面がいっぱいになるまで、またはユーザーが下にスクロールするまで、さらに6つの結果をロードする検索ページがあります。
ページの上部で、特にいくつかのフィルターを追加しようとすると、在庫切れのアイテムの結果がフェードアウトします。
したがって、背後にあるコードは、在庫切れの商品のアイテムコンテナにクラス「outOfStock」を追加します。非常に単純なjQueryは、これらをフェードアウトしてボタンのテキストを切り替えることができます。
$('#inStockOnly').click(function () {
var buttonText = $(this).html();
$('.outOfStock').fadeOut('slow');
$(this).html(buttonText == "Show All Items" ? "In Stock Only" : "Show All Items");
});
これは問題ありませんが、もちろん、すでに表示されているアイテムに対してのみこのアクションを実行するため、ユーザーがページを下にスクロールすると、AJAXはより多くの結果をロードしますが、このフィルターはそれらの結果には適用されません。
もちろん、ボタンをもう一度押すと、アイテムの半分でフェードが誤って切り替わります。
AJAX成功関数の戻り値に追加しようとし$('.outOfStock').css('display','none')
ましたが、機能しないようですが、機能したとしても、ロード中は結果が表示され、直後に非表示になります。これは私が行った結果ではありません。目指して。
display:none
要素inStockOnly
が以前にクリックされた場合(またはテキストが含まれている場合Show All Items
) 、ロードされていないアイテムをロード時に強制する方法に関する提案