製品ページを ajax でソートし、既存の DOM 要素を ajax によって新しく生成された DOM で上書きすると、JavaScript が機能しません。Zoom製品画像などの製品を並べ替えると、すべての効果がなくなります.onを使用してDOMをバインドする必要があるという別の記事を読みましたが、場合によっては.onが機能しません。以下にコードを示します
$(document).ready(function (){ function callAjax (){ if ($("#brandId").val() == "") { var brandId; } else { var brandId = $("#brandId").val(); } if ($("#categoryId").val() == "") { var categoryId; } else { var categoryId = $("#categoryId").val(); } if ($("#genderId").val() == "") { var genderId; } else { var genderId = $("#genderId").val(); } if ($("#stockId").val() == "") { var stockId; } else { var stockId = $("#stockId").val(); } $.ajax({ url: baseUrlForExternalJS.baseUrl + "site/sort_products", type:"POST", data: {'brandId':brandId, 'categoryId' : categoryId, 'genderId' : genderId , 'stockId' : stockId }, success: function(msg){ $('#products').html(msg); } }); } $("#categoryId").on('change', function(){ //alert('called'); callAjax(); }); $("#genderId").on('change', function(){ //alert('called'); callAjax(); }); $("#stockId").on('change', function(){ //alert('called'); callAjax(); }); $("#brandId").on('change', function(){ callAjax(); }) }); </script>