0

我已经动态生成了要与 JQuery 一起使用的 HTML 表。它看起来有点像这样,只有更多的<tr>元素。

<table>
  <tr>
    <td class="name"> Apples </td>
    <td class="value"> 2.33 </td>
    <td class="amount"> <input type="text"></td>
  </tr>
</table>

我正在编写的脚本将获取文本输入字段中的任何内容,将其乘以值中指定的浮点数td并输出。<td>但是,我在使用 JQuery时遇到了问题。

我尝试了类似的东西

parseFloat($(".amount input").parent().siblings($("td.value")).text())

获得价值,但它不起作用 - 它似乎试图将它乘以每个元素,而不管类如何。我尝试了一个<tr>唯一的数据是整数的地方......

2013-8-28 | 2.1 | 20

...它吐出 4026。我不知道为什么。

所以,问题仍然存在:我如何从同一<td>value开始获取该类的内容?input<tr>

4

10 回答 10

2

尝试这个:

$(document).ready(function(){
    $('input').on('blur', function(){
       alert($(this).val() * $(this).parent().siblings('.value').text()); 
    });
})
于 2013-09-03T12:08:02.083 回答
0

怎么样

$(".amount").parent().find('.value').text();
于 2013-09-03T11:57:47.353 回答
0

尝试

HTML

<table>
  <tr>
    <td id="val1" class="name"> Apples </td>
    <td id="val2" class="value"> 2.33 </td>
    <td class="amount"> <input type="text"></td>
  </tr>
</table>

JavaScript

function getvalue()
{
  var name = (document.getElementById('val1').innerText || document.getElementById('val1').textContent);

  var value = parseFloat(document.getElementById('val2').innerText || document.getElementById('val1').textContent);   
}
于 2013-09-03T11:58:11.173 回答
0

你可以试试

$('.amount').each(function(){
    var $this = $(this), amount = parseFloat($this.find('input').val()) || 0, rate = parseFloat($this.prev().text()) || 0;
    console.log(amount * rate)
})
于 2013-09-03T11:58:57.980 回答
0

改变

.siblings($("td.value"))

.siblings('td.value')

演示

于 2013-09-03T11:59:20.380 回答
0

这也应该有效

$('input').on('blur', function(){
   alert($(this).val() * $(this).parent().siblings('.value').text()); 
});

在这里工作小提琴

于 2013-09-03T11:59:50.810 回答
0

您的函数中的选择器siblings()是错误的。尝试这个:

parseFloat($(".amount input").parent().siblings(".value").text())

示例小提琴

于 2013-09-03T12:00:09.253 回答
0

利用 :

$('input').on('blur', function(){
   var value = $(this).closest("tr").siblings(".value").text(); 
});
于 2013-09-03T12:00:58.990 回答
0

有很多选择:

$(".amount input").parent().prev("td.value").text() //good to use

或者

$(".amount input").parent().siblings("td.value").text()

或者

$(".amount input").parent().parent().find("td.value").text()

完整的工作演示

小提琴演示

于 2013-09-03T12:12:59.847 回答
0

我已经完成了 keyup 事件,你可以随心所欲,FIDDLE

    jQuery(function(){
        $('.amount input').keyup(function(){
            var input_value = this.value;
            var values = $(this).parent().prev().text();
            alert(input_value * values);
        })
    })
于 2013-09-03T12:14:05.477 回答