我目前正在研究一個軟件插件,該插件掃描鏈接的頁面以編輯它們。但是有一個問題:我不想編輯包含在特定元素中的鏈接(在這種情況下:編輯框)。包含在此編輯框中的元素也可以嵌套,因此父代可能不合適。選擇器忽略包含在特定元素中的元素
有什麼辦法通過包含在特定元素中的選擇器排除元素嗎?
我目前正在研究一個軟件插件,該插件掃描鏈接的頁面以編輯它們。但是有一個問題:我不想編輯包含在特定元素中的鏈接(在這種情況下:編輯框)。包含在此編輯框中的元素也可以嵌套,因此父代可能不合適。選擇器忽略包含在特定元素中的元素
有什麼辦法通過包含在特定元素中的選擇器排除元素嗎?
可以運行這個普通的JavaScript,它返回一個不是在您指定的容器匹配模式的所有元素。
var anchors = document.querySelectorAll('*:not(.editBox)>a.link');
假設你不想容器有一類「編輯框」中,你可以改變匹配的「鏈接」類是你想要的任何查詢選擇,可以是「A」的所有錨元素平原。我創建了一個JSFiddle作爲演示。
我測試了您的解決方案,它似乎是一個好方法。我也很感激你的JSFiddle演示。謝謝! – Zwirbelbart
我很高興它有幫助。 – joseeight
這並不都必須在一個選擇器上。您可以非常簡單地使用您的常規選擇器來捕捉所有元素,然後執行not()
函數將元素修剪爲僅限於您需要的元素。
var elems = $("a"); // all anchor links
elems = elems.not(".ignore_me"); // remove all links with the "ignore_me" class.
你甚至可以結合這兩種成一個命令,使用功能鏈接:
var elems = $("a").not(".ignore_me");
第三個選擇,我覺得是有點不太可讀會是這樣的:
var elems = $("a:not(.ignore_me)");
參考文獻:
你試過了什麼?顯示一些代碼。 '掃描頁面鏈接以編輯它們''我不想編輯鏈接'有點矛盾。你能詳細說明嗎? – stackErr
http://api.jquery.com/not-selector/或http://api.jquery.com/not/怎麼樣? – Nebril
@stackErr。 「......包含在特定元素中」。沒有什麼矛盾的。我已經嘗試過使用.not(),但這並不是鏈接本身擁有這個類。這是編輯框,它可以是父母之一。 – Zwirbelbart