大約一周前我開始使用 jQuery,我想從現有表中進行搜索。
從任何行呼叫text()時,它會顯示空字串'',因此無法將搜索到的字串與表中的現有字串進行比較。
例如,以下代碼回傳 4 個''. 我怎樣才能解決這個問題?
$(document).ready(() => {
$('#test tr').filter(() => {
console.log($(this).text());
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<table>
<tbody id="test">
<tr>
<td>example</td>
<td>1</td>
</tr>
<tr>
<td>example</td>
<td>2</td>
</tr>
<tr>
<td>example</td>
<td>3</td>
</tr>
<tr>
<td>example</td>
<td>4</td>
</tr>
</tbody>
</table>
uj5u.com熱心網友回復:
你的代碼有兩個問題。首先,您使用的是箭頭函式,因此this關鍵字將指向外部背景關系,而不是tr迭代中的元素。要解決此問題,請使用匿名函式,或接收tr箭頭函式的引數。我在下面的示例中完成了后者。
第二個問題是您將filter()其用作迭代器,這是不正確的。filter()應該用于減少 jQuery 物件中的一組元素。因為你想在這種情況下回圈,你應該each()改用。
jQuery($ => {
$('#test tr').each((i, tr) => {
console.log($(tr).text().trim());
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<table>
<tbody id="test">
<tr>
<td>example</td>
<td>1</td>
</tr>
<tr>
<td>example</td>
<td>2</td>
</tr>
<tr>
<td>example</td>
<td>3</td>
</tr>
<tr>
<td>example</td>
<td>4</td>
</tr>
</tbody>
</table>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/450036.html
標籤:javascript html jQuery
上一篇:如果字串陣列部分匹配,則過濾
