gpt4 book ai didi

javascript - 无法通过 JavaScript 单击呈现的输出

转载 作者:行者123 更新时间:2023-12-02 19:23:56 25 4
gpt4 key购买 nike

我有一个表,它在其行的单击事件上运行一个函数。它工作得很好,但是当 AJAX 将 tr 添加到该表时,我无法触发该行的单击事件,或者我们可以说除了其他行仍然能够触发单击事件之外,该行没有触发单击事件。

$('div.dashboard-content table.list tbody tr').click(function(){
var id = $(this).attr('id');
$('div.dashboard-content table.list tr td').css({'background': '#ffffff','font-weight':'normal'});
$('div.dashboard-content table.list thead td').css({'background': '#EFEFEF','font-weight':'bold'});
$('tr[id='+ id + '] td').css({'background': 'lightblue','font-weight':'bolder'});
$.get(
'index.php?route=sale/order/infoforhome&token=<?php echo $token; ?>',
{ 'order_id' : id },
function(data){
if(data)
{
$('#oder_detail').html
('<table>' +
'<tbody>' +
'<tr>'+
'<td style="font-weight:bold;">' +
'<?php echo $column_orderid; ?>:'+
'</td>'+
'<td>' +
data['orderid'] +
'</td>'+
'</tr>' +
'<tr>'+
'<td style="font-weight:bold;">'+
'<?php echo $column_customername; ?>:'+
'</td>'+
'<td>'+
data['name'] +
'</td>'+
'</tr>'+
'<tr>'+
'<td style="font-weight:bold;">'+
'<?php echo $column_shippingaddress; ?>: '+
'</td>'+
'<td>'+
data['address'] +
'</td>'+
'</tr>'+
'<tr>'+
'<td style="font-weight:bold;">'+
'<?php echo $column_telephone; ?>:'+
'</td>'+
'<td>'+
data['telephone'] +
'</td>'+
'</tr>'+
'<tr>'+
'<td style="font-weight:bold;">'+
'<?php echo $column_orderstatus; ?>:'+
'</td>'+
'<td>'+
data['orderstatus'] +
'</td>'+
'</tr>'+
'<tr>'+
'<td style="font-weight:bold;">'+
'<?php echo $column_ordertotal; ?>:'+
'</td>'+
'<td>'+
data['total'] +
'</td>'+
'</tr>'+
'</tbody>'+
'</table>');
}
else
{
$('#order_detail').html('Sorry No Details exists for this order in the database');
}
}, 'json');

});


function getLatestOrders() {
var last_order_id = $('div.dashboard-content table.list tbody tr:first').attr('id');
$.get(
"index.php?route=common/home/latest&token=<?php echo $token; ?>",
{'order_id' : last_order_id },
function (data) {
if (data) {
for (var i = 0; i < data.length; i++) {
$('div.dashboard-content table.list tbody tr:first').before(
'<tr id="' +
data[i]['order_id'] +
'"><td class="right">' +
data[i]['order_id'] +
'</td><td class="left">' +
data[i]['customer'] +
'</td><td class="left">' +
data[i]['status'] +
'</td><td class="left">' +
data[i]['date_added'] +
'</td><td class="right">' +
data[i]['total'] +
'</td><td class="right"> [<a href="' +
data[i]['action']['href'] + '">' +
data[i]['action']['text'] +
'</a>]</td></tr>'
);
}
}
}
}

最佳答案

您需要将单击函数绑定(bind)到父元素,以便事件可以正确冒泡。我看不到任何结构,因此我将在这里做出一些假设。

//bind to document.
$(document).on('click', 'table > tr', function(){
//now all rows will have a click function, regardless of ajax.
alert('Expected click fired.');
});

.on() 1.7以后的版本使用该方法来处理事件委托(delegate)。在以前的版本中,我们使用 .delegate() .

关于javascript - 无法通过 JavaScript 单击呈现的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com