在包含<div>
塊的列表的頁面上,每個塊包含位置信息,並且在每個<div>
之後都有一個<hr>
,我需要針對並刪除所有沒有波士頓城市的div。如何使用jQuery刪除包含特定文本的div以及僅刪除div後的HR分隔符
我能夠很容易地刪除那些的div: $("div.location").not(":contains('Boston')").remove();
那就是我發現的邊角料<hr>
過剩會不會更好的目標並首先刪除所有分隔的?那麼divs?我可以同時使用jQuery嗎?謝謝!
在包含<div>
塊的列表的頁面上,每個塊包含位置信息,並且在每個<div>
之後都有一個<hr>
,我需要針對並刪除所有沒有波士頓城市的div。如何使用jQuery刪除包含特定文本的div以及僅刪除div後的HR分隔符
我能夠很容易地刪除那些的div: $("div.location").not(":contains('Boston')").remove();
那就是我發現的邊角料<hr>
過剩會不會更好的目標並首先刪除所有分隔的?那麼divs?我可以同時使用jQuery嗎?謝謝!
$("div.location").not(":contains('Boston')").next('hr').remove().end().remove();
注到comment
$("div.location").not(":contains('Boston')") // return the target div
.next('hr') // take the pointer to hr, next to target div
.remove() // remove the hr
.end() // return the pointer to target div.location again
.remove(); // remove the target div
非常感謝!你能具體告訴我添加'.end()'的目的是什麼? – user1729506
@ user1729506請參閱更新答案...我希望這會幫助你。謝謝! :) – thecodeparadox
Awsome!感謝徹底的崩潰。 – user1729506
我都可以做的jQuery的一舉
不是它的任何「更好」,但你可以始終只是IT連鎖,取出next()
HR,然後用end()
退一步remove()
股利,或做它周圍的其他方法首先移除DIV,一點兒也不真正的問題太多:
$('div.location').filter(function() {
return $(this).text().indexOf('Boston') == -1;
}).next('hr').remove().end().remove();
謝謝!我總是歡迎將「包含」與「過濾器」進行比較的示例。 – user1729506
最明顯的一個是$("div.location:not(:contains('Boston')), div.location:not(:contains('Boston')) + hr").remove()
有趣。你可以提供任何見解,爲什麼這將優於'$(「div.location」)。not(「:contains('Boston')」)。next('hr')。remove()。end() .remove();'?謝謝! – user1729506
當end()工作時,上下文切換可能沒有開銷,但是複雜選擇器'div.location:not(:contains('Boston'))'的重複可能會很慢。我不確定我的方法比其他方法快。 – lavrik
使用一個簡單的選擇,然後讓留下的結膜小時的元素在
$("div.location:not(:contains('Boston'))").remove().add("hr+hr").remove();
編輯: 替代避免通過直接選擇第一個雙dom操縱
$("div.location:not(:contains('how'))").add("div.location:not(:contains('how'))+hr").remove();
有趣的有多少種方式來做這個句法! –