機能は動きます。
ただ、コードが恐らく無駄に長いので、シンプルにまとめる方法をご教授いただけたら幸いです。
つぎはぎで手探りでコードを書いていたら、下記のようなコードになってしまいました、、、
jQuery
1 <script> 2 $(function() { 3 $(':radio.now, #wight__wrap :checkbox').on('change',function(e) { 4 var scores = $(':radio.now:checked,#wight__wrap :checkbox:checked').map(function(){ 5 return parseInt($(this).data("price")); 6 }).get()||[]; 7 if($('#p__model__inner a.submitBtn').data("price")>0){ 8 scores.push($('#p__model__inner a.submitBtn').data("price")); 9 } 10 if($('#p__engraving__inner a.submitBtn').data("price")>0){ 11 scores.push($('#p__engraving__inner a.submitBtn').data("price")); 12 } 13 if($('#p__grip__inner a.submitBtn').data("price")>0){ 14 scores.push($('#p__grip__inner a.submitBtn').data("price")); 15 } 16 if($('#p__shaftband__inner a.submitBtn').data("price")>0){ 17 scores.push($('#p__shaftband__inner a.submitBtn').data("price")); 18 } 19 if($('#p__cover__inner a.submitBtn').data("price")>0){ 20 scores.push($('#p__cover__inner a.submitBtn').data("price")); 21 } 22 if($('#weight__stamp__inner a.submitBtn').data("price")>0){ 23 scores.push($('#weight__stamp__inner a.submitBtn').data("price")); 24 } 25 if($('#p__option__inner a.submitBtn').data("price")>0){ 26 scores.push($('#p__option__inner a.submitBtn').data("price")); 27 } 28 if(scores.length>0){ 29 var sum = scores.reduce((a,x)=>a+x); 30 if (sum >= 30000) { 31 $("#sent").text(0); 32 } else { 33 $("#sent").text(550); 34 } 35 var postage = Number($("#sent").text()); 36 if ($(":radio.plusbutton").is(":checked") && $(":radio.plusthree").is(":checked")) { 37 sum -= 30000; 38 } 39 if ($(":radio.plusbutton").is(":checked") && $(":radio.ifplate").is(":checked")) { 40 sum -= 12000; 41 } 42 $("#sum").text(sum); 43 $("#tax").text(sum * 0.1); 44 $("#all").text(sum + sum * 0.1 + postage); 45 } 46 }).eq(0).trigger('change'); 47 48 $('#p__model__inner a.submitBtn').on('click', function(e) { 49 e.preventDefault(); 50 $(this).data("price",$('[name=model]:checked').data('price')); 51 $(':radio.now').eq(0).trigger('change'); 52 }).data("price",0); 53 54 $('#p__engraving__inner a.submitBtn').on('click', function(e) { 55 e.preventDefault(); 56 $(this).data("price",$('[name=engraving]:checked').data('price')); 57 $(':radio.now').eq(0).trigger('change'); 58 }).data("price",0); 59 60 $('#p__grip__inner a.submitBtn').on('click', function(e) { 61 e.preventDefault(); 62 $(this).data("price",$('[name=grip]:checked').data('price')); 63 $(':radio.now').eq(0).trigger('change'); 64 }).data("price",0); 65 66 $('#p__shaftband__inner a.submitBtn').on('click', function(e) { 67 e.preventDefault(); 68 $(this).data("price",$('[name=shaftband]:checked').data('price')); 69 $(':radio.now').eq(0).trigger('change'); 70 }).data("price",0); 71 72 $('#p__cover__inner a.submitBtn').on('click', function(e) { 73 e.preventDefault(); 74 $(this).data("price",$('[name=weight__stamp]:checked').data('price')); 75 $(':radio.now').eq(0).trigger('change'); 76 }).data("price",0); 77 78 $('#weight__stamp__inner a.submitBtn').on('click', function(e) { 79 e.preventDefault(); 80 $(this).data("price",$('[name=p__cover]:checked').data('price')); 81 $(':radio.now').eq(0).trigger('change'); 82 }).data("price",0); 83 84 $('#p__option__inner a.submitBtn').on('click', function(e) { 85 e.preventDefault(); 86 $(this).data("price",$('[name=p__option]:checked').data('price')); 87 $(':radio.now').eq(0).trigger('change'); 88 }).data("price",0); 89 90 }); 91 </script>
回答2件
あなたの回答
tips
プレビュー