1

我非常坚持以下几点:

我已经设置了表格行,我从每一行中选择数据值并将它们发送到 .post 请求(通过单击附加到每一行的计算按钮)。直到这里 - 好的,我从每一行收集不同的数据。但是,当我尝试将 .post 结果附加到行输入字段时,我无法将其仅附加到行,它会附加到整个行集。知道为什么吗?

$('a.calculate').click(function(e) {

   e.preventDefault();

   var a = $(this);
   var start_date = a.parents('tr').find('input.first-date').val();
   var end_date = a.parents('tr').find('input.last-date').val();

   $.post( "calculate.php", {start_date: ""+start_date+"", end_date: ""+end_date+""}, function(data){
            a.parents('tr').find('input.price').val(data);
   });

});
4

2 回答 2

1

不确定您的 html,但我看到的一个可能错误是使用.parents('tr').

parents('tr')将返回所有tr取决于您的 html (嵌套表)的祖先,它可能会超出行..并且后续find('input.price')可能匹配多个元素。

尝试使用.closest('tr')which 将停止它找到的第一个..

$('a.calculate').click(function(e) {

   e.preventDefault();

   var a = $(this);
   var start_date = a.closest('tr').find('input.first-date').val();
   var end_date = a.closest('tr').find('input.last-date').val();

   $.post( "calculate.php", {start_date: ""+start_date+"", end_date: ""+end_date+""}, function(data){
            a.closest('tr').find('input.price').val(data);
   });

});
于 2013-06-23T14:04:13.063 回答
0

也请分享 HTML。可能是格式错误。

小代码清理:

$('a.calculate').click(function(e) {

   e.preventDefault();

   var a = $(this),
       tr = a.parents('tr').first(),
       start_date = $('input.first-date', tr).val(),
       end_date = $('input.last-date', tr).val();

   $.post( "calculate.php", {start_date: ""+start_date+"", end_date: ""+end_date+""}, function(data){
            $('input.price', tr).val(data);
   });

});
于 2013-06-23T14:05:08.320 回答