Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何引用eq()jquery的子级_Javascript_Jquery - Fatal编程技术网

Javascript 如何引用eq()jquery的子级

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(); 这是完美的,除了一

我有一个表,我正试图使用下面的代码派生一个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()
如果您有任何建议或建议,我们将不胜感激

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

$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()自己测试它。