我正在嘗試使用選擇器中的變數來選擇一個元素,以洗掉最近的具有 class 的元素flag-container。但是,當我觸發該功能時,該元素不會被洗掉。
function remove_div() {
let comment_pk = 1
$("div:contains('" comment_pk "')").closest('.flag-container').remove()
}
$('#trigger').click(function() {
remove_div()
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div hidden class="comment-pk">1</div>
<div class="drilled-hierarchy">
<div class="flag-container">
To be removed
</div>
</div>
<button id="trigger"> Remove </button>
uj5u.com熱心網友回復:
您的邏輯中的問題是沿著祖先元素向上closest()移動DOM 。在你正在尋找目標,而不是一個兄弟到原來的孩子。.flag-containerdiv
因此,您可以使用next()*find()代替:
function remove_div() {
let comment_pk = 1
$("div:contains('" comment_pk "')").next('.drilled-hierarchy').find('.flag-container').remove()
}
$('#trigger').click(function() {
remove_div()
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div hidden class="comment-pk">1</div>
<div class="drilled-hierarchy">
<div class="flag-container">
To be removed
</div>
</div>
<button id="trigger">Remove</button>
*next()在這種情況下,在呼叫中使用選擇器字串引數是可選的,但可以避免以后出現意外錯誤。siblings()根據您的確切用例,也可能是合適的。
uj5u.com熱心網友回復:
在 vanilla JS 中,只會找到完全匹配的:
[...document.querySelectorAll('div')]
.find(d=>d.textContent===String(comment_pk))
.nextElementSibling
.querySelector('.flag-container')
.remove();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339823.html
標籤:javascript 查询
