1

我有以下动态HTML 行。

<tr role="row" class="odd">
     <td contenteditable="false" class="sorting_1"> </td>
     <td contenteditable="false"> <span class="name">Alex Nilson </span></td>
     <td contenteditable="false"><span class="price"> 1234 </span></td>
     <td contenteditable="false"> <span class="qty" >1234 </span></td>
     <td><button class="pr_edit" href="javascript:;"> Edit </button></td>
     <td><button class="pr_elete" href="javascript:;"> Delete </button></td>
</tr>

单击编辑按钮时,我需要将该特定行的单元格元素的值作为 JS 变量获取到 jQuery 中,我可以将其 AJAX POST 到另一个 PHP 页面以插入数据库。我试着像下面那样做,但没有成功。

$(document).ready(function () {
     $('.pr_edit').click(function () {
         var currentTD = $(this).parents('tr').find('td');            
         $.each(currentTD, function () {
             var iname = $(this).find("span.name").html();
             var iprice = $(this).find("span.price").val();
             var iqty=$(this).find("span.qty").val();
         });

它没有像我预期的那样捕获变量。我该如何实现这一目标?我需要将这些 SPAN 数据转换为三个变量。

4

2 回答 2

6

您需要动态生成元素的事件委托text(),并使用而不是val()获取span. 也用于closest('tr')获取 parent tr,您不需要使用每个。

$(document).ready(function () {
     $('body').on('click', '.pr_edit', function () {
         var currentTR = $(this).closest('tr');
         var iname = currentTR.find("span.name").text();
         var iprice = currentTR.find("span.price").text();
         var iqty = currentTR.find("span.qty").text();
     });
 });      
于 2016-02-01T13:18:56.270 回答
1

如果你想使用动态数据和 jQuery,你需要动态绑定你的点击事件。反而 :

$('.pr_edit').click(function () {
    //magic
}

$('.pr_edit').on('click', function () {
    //magic
}

但是,即使您的整个表格都是动态加载的,您也必须有一个“总是”的元素作为参考。喜欢:

$('html, body').on('click', '.pr_edit', function () {
  //magic
}

看看这个以供参考:http: //api.jquery.com/on/

于 2016-02-01T13:21:14.680 回答