2016-06-23 5 views
0

ajaxとjqueryを使用してphpからデータを取得しようとしています。
T1 .... t6のクラス名です
予想される出力:クラスを使用して2つのtdの間にテキストを挿入し、Jqueryが機能しない

t1 t2 t3 t4 t5 t6 
A 10 20 30 40 50 60 
B 20 20 10 20 20 10 
C 10 20 20 20 20 50 

実際の出力:

Bot_Code t1 t2 t3 t4 t5 t6 
     A 10 20 20 20 20 50 
     B 10 20 20 20 20 50 
     C 10 20 20 20 20 50 

HTML:

<table id="table"> 
<tr> 
<td> 
</td> 
</tr> 
<tr> 
<th> 

<span style="margin-right:150px">Bottle Name</span> 
<span class="d5">Bottle Size</span> 
<span class="d6">Bottle Type</span> 
<span class="d1">Opening</span> 
<span class="d2">Inward</span> 
<span class="d3">Outward</span> 
<span class="d4">Closing</span></th> 
</tr> 

<?php 
while($row_list=mysql_fetch_array($list)) 
{?> 
<tr> 

<td><a class="product" href="" myval="<?php echo $row_list['Bot_Code'];?>"><?php echo $row_list['Bot_Code'];?></a></td> 
<td class="t5"><?php echo $row_list['Bot_Size'];?></td> 
<td class="t6"><?php echo $row_list['Bot_Type'];?></td> 
<td class="t1"></td> 
<td class="t2"></td> 
<td class="t3"></td> 
<td class="t4"></td> 

</tr> 

<?php 
}?> 
</tr> 
<tr><td></td></tr> 
</table> 

のjQuery:

<script> 
$('document').ready(function(){ 
$('a').click(function(){ 
     var node=$(this); 
    var item = node.attr('myval'); 
    $.post('month_copy.php', {"bcode":item}, function(data){ 

    var products = data.split("|"); 
$(".t1").text(products[0]); 
$(".t2").text(products[1]); 
$(".t3").text(products[2]); 
$(".t4").text(products[3]) ; 
}); 

}); 

$('a').trigger('click'); 
}); 
</script> 

今、それは各行に更新された値を示しています。何か間違っていると思います。私はうまくいかなかったと思いました。私に提案してください。

+0

ちょっといいアイデア。 trタグの各行にclass属性またはid属性を設定する必要があります。 $( "#table.t1")はクラスt1を持つすべてのdom要素を意味します。 $( "#table #rowid .t1") – fucethebads

+0

の代わりにmysql_fetch_assocを使用してください。 –

+0

ここに入れたコードはあなたの実際のコードではありません。 '#table.t1'はあなたのhtmlと一致しない 'id = table' *と* class 't1'つまり'

'の要素になります。 –

答えて

1

あなたはこのような何か行うことができます - あなたは、ID列を追加することにより、HTMLを最適化することができれば、あなたはより多くのあなたの​​が実際に#table .t1であると仮定すると、

+0

'.parents()'はセレクタと一致するすべての祖先を見つけます。これは問題の限られたHTMLでも機能しますが、実際には、複数の 'tr'が存在することになる可能性があります。 '.closest(" tr ")'を使って祖先ツリー内の最も近い/ "最も近い"を得ることができます。 –

+0

HTMLとjsを微調整するだけで、オーバーヘッドを大幅に削減できます。 –

0

を最適化するためにラインを調整することができますが

node.parents('tr').children('.t1').text(products[0]); 

を(余分なスペース)。

変更する行を指定する必要があります。すなわち、すべての最初の列(あなたが見つけたとして)の -

$("#table .t1").text("xx") 

は#table内部クラスT1とすべての要素を変更します。次のことができるようにするために必要なもの

は次のとおりです。

thisRow.find(".t1").text("xx") 

すなわちだけあなたが行うことができ、現在の行、内部でT1を見つける:

var row = $(this).closest("tr"); 
「これは」要素がクリックされた

すなわち、aは、あなたにあなたを与えます:

$('a').click(function() { 
    var node = $(this); 
    var row = node.closest("tr"); 
    var item = node.attr('myval'); 
    $.post('month_copy.php', {"bcode":item}, function(data) { 

     var products = data.split("|"); 
     row.find(".t1").text(products[0]); 
     row.find(".t2").text(products[1]); 
     ... 
    }); 
}); 
関連する問題