如何引用eq()jquery的子元素

时间:2012-12-03 13:25:55

标签: javascript jquery

我有一个表,我试图使用下面的代码

派生一个JSON对象
var tbl = $('#myTable tr:has(td)').map(function(i,v){
    var $td = $('td', this);
    return{
        id:$td.eq(0).text(),
        column1:$td.eq(1).text(),
        column2:$td.eq(2).text()

    }
    }).get();

除了一件事之外,这种方法很完美,我有时在td中有一个文本框或复选框,我需要检索它的值。我已经谷歌并搜索了StackOverflow,但在这种情况下我找不到任何有用的东西

我也尝试了以下没有运气

id:$td.eq(0).val()
id:$td.eq(0).childern().val()

任何建议或意见将不胜感激

2 个答案:

答案 0 :(得分:2)

如果它的内容类似于文本框,您可能希望find输入:

$td.eq(0).find('input').val()

对于复选框,请使用pseudo-selector :checkbox并确定其checked属性

$td.eq(0).find(':checkbox').prop('checked')

答案 1 :(得分:0)

如果您需要价值和文字,请使用以下内容:

id:$td.eq(0).find(':checkbox').attr('value') + $td.eq(0).text();

如果您只需要价值:

id:$td.eq(0).find(':checkbox').attr('value');

顺便说一句,jQuery团队使用.find()而不是$(target,context)推荐(检查下面的评论); 在您的示例中:

var $td = $('td', this);

应该是这样的:

var $td = $(this).find('td');