iT邦幫忙

0

while jquery簡化

<? while ($rs = @mysql_fetch_array($re)){ ?>
$(document).ready(function(){
     get_total<? echo $rs['buy_id'];?>();
 });
 function get_total<? echo $rs['buy_id'];?>(){
     $("#data_total<? echo $rs['buy_id'];?>").load("get_total?id=<? echo $rs['buy_id'];?>");
 }

 $(document).ready(function(){
     get_s_total<? echo $rs['buy_id'];?>();
 });
 function get_s_total<? echo $rs['buy_id'];?>(){
     $("#data_s_total<? echo $rs['buy_id'];?>").load("get_s_total?id=<? echo $rs['buy_id'];?>");
 }

 $(document).ready(function(){
     get_b_total<? echo $rs['buy_id'];?>();
 });
 function get_b_total<? echo $rs['buy_id'];?>(){
     $("#data_b_total<? echo $rs['buy_id'];?>").load("get_b_total?id=<? echo $rs['buy_id'];?>");
 }
<? }?>

這是我的某段程式
必須放在while迴圈中因為要獲取每筆的buy_id
該如何簡化他呢?
就不需要放在while迴圈裡面也能做到相同行為?
因為這樣等於每一筆資料都會有這一段jquery
拖慢整個速度

1 個回答

3
fillano
iT邦超人 1 級 ‧ 2016-12-14 13:45:24
最佳解答

頁面(前端)的邏輯與資料(後端)的邏輯要拆開,你日後如果要使用樣板、使用framework,這些都是第一步。

永遠不要在查詢資料的迴圈中產生頁面資料,你應該把資料塞進陣列變數,然後在頁面邏輯的部份使用這個陣列變數。

你使用的javascript函數,不應該動態產生,有變動的部份,當做函數的參數就好了。

fillano iT邦超人 1 級 ‧ 2016-12-14 13:54:56 檢舉

所以程式可以變成這樣:

<?php
$buy_id = array();
while ($rs = @mysql_fetch_array($re)){
	$buy_id[] = $rs['buy_id'];
}

?>
<script>
var buy_id = [];
<?php foreach($buy_id as $v) { ?>
buy_id.push('<?=$v?>');
<?php } ?>
$(function() {
	$.each(buy_id, function(idx, id) {
		get_total(id);
		get_s_total(id);
		get_b_total(id);
	})
});
function get_total(id) {
	$('#data_total' + id).load('get_total?id=' + id);
}
function get_s_totla(id) {
	$('#data_s_total' + id).load('get_s_total?id=' + id);
}
function get_b_total(id) {
	$('#data_b_total' + id).load('get_b_total?id=' + id);
}
</script>

小松菜奈 iT邦研究生 4 級 ‧ 2016-12-15 11:41:58 檢舉

學到一招!長知識,感謝

我要發表回答

立即登入回答