jQuery获取可见的表单元格';价值观
我有一个类似这样的表,其中大多数行不显示:jQuery获取可见的表单元格';价值观,jquery,asp.net-mvc,csv,Jquery,Asp.net Mvc,Csv,我有一个类似这样的表,其中大多数行不显示: <table id="myTable" class="tablesorter"> <thead> <tr> <th>header1</th> <th>header2</th> ... </tr> </thead> <
<table id="myTable" class="tablesorter">
<thead>
<tr>
<th>header1</th>
<th>header2</th>
...
</tr>
</thead>
<tbody>
<tr style="display:none;">
<td>content1</td>
<td>content2</td>
...
</tr>
<tr style="display:none;">
<td>content1</td>
<td>content2</td>
...
</tr>
<tr>
<td>content1</td>
<td>content2</td>
...
</tr>
...
</tbody>
</table>
校长1
校长2
...
内容1
内容2
...
内容1
内容2
...
内容1
内容2
...
...
我试图访问表中所有可见的行,并将每个单元格的值连接到一个字符串,该字符串将输出到CSV中。我有一些jQuery代码,但目前还不太成熟:
<input type="button" value="Export" id="csv-export" />
<script type="text/javascript">
$(function () {
$("#csv-export").click(function () {
var csvStr = "";
$("#myTable tr:visible td").each(function () { //for each td in each visible row
if ($(this).has("a") == false) { //if the td does not contain a link
csvStr += $(this).html(); //Append the td's html
}
});
$.get('@Url.Action("CSVExport")', { csv: csvStr });
});
});
</script>
$(函数(){
$(“#csv导出”)。单击(函数(){
var csvStr=“”;
$(“#myTable tr:visible td”)。每个(函数(){//用于每个可见行中的每个td
if($(this).has(“a”)==false){//如果td不包含链接
csvStr+=$(this.html();//附加td的html
}
});
$.get('@Url.Action(“CSVExport”),{csv:csvStr});
});
});
行$(“#myTable tr:visible td”)。每个(函数(){
都失败了。这里有什么帮助吗?我在编写这种类型的代码方面有点业余。我希望此代码选择所有未设置为显示:无的元素,然后针对每个元素,选择并访问所有td
元素。()
方法返回jQuery对象,对象在JavaScript中是真实值,has
不同于hasClass
方法不返回布尔值,它是一种过滤方法,您应该使用length
属性:
if (!$(this).find("a").length) {
如果要排除具有子体的td
元素,可以使用.not()
方法:
$("#myTable tr:visible td").not(":has(a)").each(function () {
var csvString = $("#myTable tr:visible td").not(":has(a)").map(function() {
return $.trim( $(this).text() );
}).get().join();
如果要创建逗号分隔值字符串,可以使用.map()
方法:
$("#myTable tr:visible td").not(":has(a)").each(function () {
var csvString = $("#myTable tr:visible td").not(":has(a)").map(function() {
return $.trim( $(this).text() );
}).get().join();
您遇到的问题是has将返回一个集合。为了从中获取真实值,您应该检查length属性
if (!$(this).has("a").length) {
csvStr += $(this).html();
}
否则,其他一切都可以正常工作。当你说该行失败时,你是什么意思?你是得到了JS错误?还是根本没有运行任何东西?@Jacob当我进入该行时,它跳到$。get
结尾,甚至没有进入if语句。