2009-10-23 93 views
0

我有一個jQuery的函數,循環通過一個XML並將其顯示在一個表中,並有每行的按鈕,因此用戶可以點擊它並刪除該記錄。就像我附加的代碼一樣;jQuery按鈕不執行onclick

$('#btnGetRecords').click(function() { 
    $('#imgStatus').show(); 
    $.ajax({ 
     type: 'POST', 
     url: '/WebService1.asmx/GetRecords', 
     data: '', 
     contentType: 'application/x-www-form-urlencoded; charset=utf-8', 
     dataType: 'xml', 
     success: function(xml) { 
      parseXml(xml); 
      $('#imgStatus').hide(); 
     }, 
     error: function(msg) { 
      $('#imgStatus').hide(); 
      alert('Error!'); 
     } 
    }); 
}); 

function DeleteRecord(receiptNo) { 
    alert(receiptNo); 
    $('#divOutput').html(''); 
    $('#imgStatus').show(); 
    $.ajax({ 
     type: 'POST', 
     url: '/WebService1.asmx/DeleteRecord', 
     data: 'receiptNo=' + receiptNo, 
     contentType: 'application/x-www-form-urlencoded; charset=utf-8', 
     dataType: 'xml', 
     success: function(msg) { 
      $('#delete_dialog').dialog('open'); 
      $('#imgStatus').hide(); 
     }, 
     error: function(msg) { 
      $('#imgStatus').hide(); 
      alert('Error!'); 
     } 
    }); 
} 

function parseXml(xml) { 
    $('#divOutput').html(''); 
    var x = 1; 
    var _html = '<br />'; 
    _html += '<table id="tblRecords" >'; 
    $(xml).find('Table').each(function() { 
     var fname = $(this).find('FName').text(); 
     var lname = $(this).find('LName').text(); 
     var receiptNo = $(this).find('ReceiptNo').text(); 
     _html += '<tr>'; 
     _html += '<td>'; 
     _html += fname + ' ' + lname; 
     _html += '</td>'; 
     _html += '<td>'; 
     _html += $('<input type="button" class="clsBtnDelete" id="btnDeleteRecord' + x + '" value="Delete" onclick="DeleteRecord(' + receiptNo + ');" />'; 
     _html += '</td>'; 
     _html += '</tr>'; 
     // alert(_html); 
     x++; 
    }); 
    _html += '</table>'; 
    $('#divOutput').append(_html); 
} 

但由於某種原因,刪除按鈕不會調用函數來執行刪除。任何想法如何使這個工作。謝謝!

-Ryan

+0

你有刪除按鈕的點擊方法?似乎從您的帖子中失蹤。 – CmdrTallen 2009-10-23 01:44:01

回答

0

添加您onclick事件添加表到DOM後。喜歡的東西:

$('#tblRecords .clsBtnDelete').click(DeleteRecord); 

而且具有DeleteRecord()函數,得到ReceiptNo例如,<按鈕>的ID:

  • 使用
  • 已經DeleteRecord()分裂的id值在_,並使用第二(數字)部分
+0

謝謝喬爾,但它似乎仍然不會工作。我應該刪除它說onclick =「DeleteRecord('+ receiptNo +');」的部分「並在你給我的代碼缺少一個參數,我怎麼添加使用你的代碼?謝謝! – Ryan 2009-10-23 01:53:35

+0

將嘗試。謝謝! – Ryan 2009-10-23 01:58:57

0

在表面上看起來很好,但因爲它看起來像你正在使用ASP.NET我猜測,btnGetRecords是一個asp:Button。

看看你從服務器得到的HTML,並確保按鈕有你認爲它的ID。在ASP.NET你通常在jQuery選擇看到這個

$('#<%= btnSomething.ClientID %>') 

另外,在IE表中的行/細胞有時只讀。

+0

嗨wm_eddie!我使用。 – Ryan 2009-10-23 01:57:25

+0

在這種情況下,我不確定問題是什麼,因爲就像我說的,JavaScript代碼看起來很好。你有沒有嘗試過使用螢火蟲?另外,您確定您的JavaScript代碼沒有語法錯誤,這些代碼通常會阻止剩下的代碼運行。 – 2009-10-23 04:38:22

0

Got it!

function parseXml(xml) { 
    $('#divOutput').html(''); 
    var _html = '<br />'; 
    _html += '<table id="tblRecords" >'; 
    $(xml).find('Table').each(function() { 
     var fname = $(this).find('FName').text(); 
     var lname = $(this).find('LName').text(); 
     var receiptNo = $(this).find('ReceiptNo').text(); 
     _html += '<tr>'; 
     _html += '<td>'; 
     _html += fname + ' ' + lname; 
     _html += '</td>'; 
     _html += '<td>'; 
     _html += '<input type="button" class="clsBtnDelete" id="btnDeleteRecord_' + receiptNo + '" value="Delete" />'; 
     _html += '</td>'; 
     _html += '</tr>'; 
    }); 
    _html += '</table>'; 
    $(_html).appendTo('#divOutput'); 

    $('#tblRecords .clsBtnDelete').click(function() { 
     alert('y'); 
     var cId = $(this).attr('id'); 
     var arr = cId.split('_'); 
     var receiptNo = arr[1]; 
     DeleteRecord(receiptNo); 
    }); 
} 

我把代碼塊放在解析XML中。謝謝喬爾!