我尝试使用JQuery从动态表中提取数据,但我尝试的每种方法都会将值转换为其他内容(下面的代码将返回“l”,而不是我预期的N/A)。我尝试使用.each和.map作为函数,以及.val .html和如您所见的.text来提取数据。我不知道出了什么问题,也不知道我做错了什么。非常感谢任何帮助。
HTML
<table id="attendees" class="attendees">
<thead>
<tr style="border-bottom: double;border-color: #007fff" ;="">
<th>Full Name</th>
<th>Membership Type</th>
<th>Membership Expiration Date</th>
<th>Free Vouchers</th>
<th>Classes From Pack Remaining</th>
<th>Yelp Check in</th>
<th>Payment Option</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
<tr class="data">
<td>Students Name</td>
<td>N/A</td>
<td>N/A</td>
<td>0</td>
<td>0</td>
<td>Yes</td>
<td>
<ul id="list">
<select id="payment" name="payment">
<option>Cash/Credit</option>
<option>Free Voucher</option>
<option>Yelp Check-in</option>
</select>
</ul>
</td>
<td>
<div><a href="#" class="remove"><p>Remove</p></a>
</div>
</td>
</tr>
</tbody>
</table>
JQuery
$("#submit").live('click', function (e) {
$("#attendees tr.data").map(function (index, elem) {
var x = $(this);
var cells = x.find('td');
var $data = cells.text();
//alert($data[1]);
if ($data[1] == "N/A") {
alert(true);
}
});
e.preventDefault();
});
最终解决方案
首先感谢每个人的回答,我从每个人的答案中学到了一些东西。最终,我采用了以下方案。事后看来,我可能应该更详细地描述我试图实现的内容。我的目标是扫描多行数据,并根据每行中找到的信息执行某些操作。为了实现这一点,我不得不分开使用 tr
和 td
的 .each
函数。这使我能够逐行扫描并仍然获取单个数据。
再次感谢每个人的帮助,特别是 @TechHunter。
$("#submit").on('click', function (e) {
e.preventDefault();
$("#attendees tbody tr").each(function(i) {
var $data= [];
var x = $(this);
var cells = x.find('td');
$(cells).each(function(i) {
var $d= $("option:selected", this).val()||$(this).text();
$data.push($d);
});
if ($data[1] == "N/A") {
doSomething();
}
});
});
:selected
,因为.val()
函数已经为您完成了。抱歉我完全忽略了您在这里关于数据的观点,请查看我的更新。 - TecHunter