如何在表中找到第一个文本框的值?

时间:2014-07-12 01:11:21

标签: javascript jquery

我有一个JSFiddle:http://jsfiddle.net/dPAAG/

我可以循环检查复选框的行......

$('#ordertable').find('input[type="checkbox"]:checked').each(function () {
    //this is the current checkbox
    var row = $(this);

    // this is null
    var stuff = row.find('.productVal').val();

    alert('this is a checked checkbox');
});

但我似乎无法获得同一行中第一个文本框的值。我试图通过使用类名来访问它,但它似乎不起作用。变量总是未定义的。

我错过了一些简单的东西吗?

2 个答案:

答案 0 :(得分:1)

row是对不能具有后代元素的输入的引用。您缺少用于选择输入的最近closest父项的tr方法:

var row = $(this).closest('tr');

您还可以使用过滤has方法:

$('#ordertable tr').has('input[type="checkbox"]:checked').each(function () {
    // `this` here refers the matching `tr` element
});

http://jsfiddle.net/7Tr87/

答案 1 :(得分:1)

我已经改变了你的小提琴,代码说明了一切,但如果你不理解它的任何部分,请问我,我非常乐意解释它。

我假设您想要第一列而不是第二列的值,如果您希望拥有第二列,那么您可以轻松编辑代码并在[0]之后将[1]更改为.children() {1}}功能。

http://jsfiddle.net/dPAAG/2/

    $(function () {
        $('#go').on('click', function () {
            findCheckboxes();
        });
    });


    function findCheckboxes() {


        $('#ordertable').find('input[type="checkbox"]:checked').each(function () {
            //this is the current checkbox
            var row = $(this);
            var itemValue = $($(this).parent().siblings()[0]).children().val();
            console.log(itemValue);
             //var stuff = row.find('.productVal').val();

            //alert('this is a checked checkbox');
        });

    }