1 回答

TA貢獻1828條經驗 獲得超4個贊
假設<ul>
應該在 之后<h3>
,您可以使用以下組合:
:包含
:下一個
孩子們
function getItemByTitle( title ){
? return $(`h3:contains("${title}")`).next('ul').children()
}
var listItems = getItemByTitle("Liabilities")
console.log(listItems.length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="account-type">
? ?<h3>Assets</h3>
? ?<ul></ul>
</div>
<div class="account-type">
? ?<h3>Liabilities</h3>
? ?<ul>
? ? <li>1</li>
? ? <li>2</li>
? ?</ul>
</div>

TA貢獻1895條經驗 獲得超7個贊
DOM 中沒有文本匹配,因此需要選擇所有元素,查看文本是否匹配。如果它確實選擇了父級。
const h3 = Array.from(document.querySelectorAll(".account-type > h3")).find(elem => elem.textContent.trim() === 'Liabilities');
console.log(h3)
const div = h3.closest(".account-type");
console.log(div);
const lis = div.querySelectorAll("ul li");
console.log(lis.length);
// or
console.log(h3.nextElementSibling.children)
<div class="account-type">
<h3>Assets</h3>
<ul></ul>
</div>
<div class="account-type">
<h3>Liabilities</h3>
<ul>
<li>a</li>
<li>b</li>
</ul>
</div>
添加回答
舉報