頁面存在多個span元素,文本內容不固定,需要根據已知文本值(如"cc")精確選中對應的span元素。
<span>aa</span> <span>bb</span> <span>cc</span> <span>dd</span> ......
$("span[text='cc']") // 不工作,text不是屬性
$("span:contains('cc')").filter(function() {
return $(this).text() === 'cc';
})
function findSpanByText(text) {
var spans = document.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].textContent === text || spans[i].innerText === text) {
return spans[i];
}
}
return null;
}
var target = findSpanByText('cc');
$.expr[':'].exactText = function(elem, index, match) {
return $(elem).text() === match[3];
};
// 使用:$("span:exactText('cc')")
| 方法 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| :contains + filter | jQuery標準API,鏈式調用 | 需遍歷過濾 | 項目已使用jQuery |
| 原生JS | 無依賴,性能最優 | 代碼較多 | 輕量級項目/性能敏感 |
| 自定義選擇器 | 語義清晰,復用性強 | 需預先定義 | 大量相同需求項目 |