ヘッダーと空の本文を持つテーブルがあります。
<table style="width:50%;" class="adminlist">
<thead>
<tr>
<th style="width:80%;">Number</th>
<th style="width:20%;">Quantity</th>
<th style="width:20%;"></th>
</tr>
</thead>
<tbody id="body_orderproducts">
<tr style="background-color: rgb(170, 170, 170);"> <td class="kmx_nodata" colspan="3">NO DATA.</td>
</tr>
</tbody>
</table>
ここで、データをロードし、tbody に ajax 関数を入力します。
var baseurl = '<?php echo HtmlHelper::getComponentPath(true); ?>';
var urlquery_ajax = '<?php echo RouteHelper::urlQueryWithRawAndToken('order&task=');?>';
var order_id = <?php echo $this->item->id;?>;
var kmx = jQuery.noConflict();
kmx().ready(function() {
/**
* Ajax call to load the products linked to the order
*/
function loadTableProducts() {
var myProductTableBody = kmx('#body_orderproducts');
myProductTableBody.empty();
kmx.ajax({
type: "POST",
url: baseurl,
cache: false,
data: urlquery_ajax + "getOrderProductsInJsonFormatAjax&order_id=" + order_id,
success: function(data){
data = kmx.parseJSON(data);
var myProductTableBody = kmx('#body_orderproducts');
populateTable(myProductTableBody, data);
},
failure: function(msg){
msg = kmx.trim(msg);
alert('Error: ' + msg.responseText);
}
});
}
/**
* Populate the table
*/
function populateTable(myTBodyObj, myData) {
if (myData.rows.length > 1) {
kmx.each(myData.rows, function(index,item) {
myTBodyObj.append('<tr><td>' + item.number + '</td><td align="right">' + item.quantity + '</td><td><img id="delete_product_' + item.id + '" name="delete_product_' + item.id + '" class="kmx_image_delete" alt="<?php echo JText::_( 'Delete this product'); ?>" src="components/com_cmpningbo/assets/images/delete.png" /></td></tr>');
});
}
else {
myTBodyObj.append('<tr><td colspan="2" class="kmx_nodata"><?php echo JText::_( 'NO DATA.'); ?></td></tr>');
}
return;
}}
loadTableProducts();
});
すべて正常に動作し、結果は次のようになります。
ここで、画像の「削除」をクリックしたときにイベントを処理するコードを追加します。
kmx('img[name^="delete_product_"]').live('click', function() {
alert('click');
return false;
});
各「削除」画像には、delete_product_XX のような ID と名前があります。ここで、XX は削除するレコードの ID です。そのコードは、テーブル本体が ajax で読み込まれると機能しませんが、ページの読み込み時にテーブル本体が読み込まれると機能します (ajax なし)。この問題についてはすでに確認しましたが、画像についてはライブに問題があるようです? それを解決する方法がわかりませんか?何か案が?