Javascript 如何引用eq()jquery的子级
我有一个表,我正试图使用下面的代码派生一个JSON对象Javascript 如何引用eq()jquery的子级,javascript,jquery,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(); 这是完美的,除了一
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()
如果您有任何建议或建议,我们将不胜感激如果输入内容类似于文本框,您可能会希望:
$td.eq(0).find('input').val()
对于复选框,使用并确定其checked
属性
$td.eq(0).find(':checkbox').prop('checked')
如果需要值和文本,请使用以下内容:
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');
您可以发布一些示例标记吗?复选框没有真正的值,除非您显式地给它一个值,否则它只是打开或关闭,由您使用
.prop('checked')
确定。不需要使用attr('value')
-val()
即可。但正如所评论的,复选框不一定有值“…jQuery团队建议…”,需要参考?抱歉,在jQuery.com上找不到该文章。看到1-2年前,他们已经在这一刻重做了。无论如何-直接方法调用总是工作得更快。2分钟前测试过-在大的选择中,$(元素)。查找(terget)总是比$(目标,上下文)快2-5毫秒。您可以使用console.time()自己测试它。