2014-01-15 135 views
0

我目前正在研究一個軟件插件,該插件掃描鏈接的頁面以編輯它們。但是有一個問題:我不想編輯包含在特定元素中的鏈接(在這種情況下:編輯框)。包含在此編輯框中的元素也可以嵌套,因此父代可能不合適。選擇器忽略包含在特定元素中的元素

有什麼辦法通過包含在特定元素中的選擇器排除元素嗎?

+0

你試過了什麼?顯示一些代碼。 '掃描頁面鏈接以編輯它們''我不想編輯鏈接'有點矛盾。你能詳細說明嗎? – stackErr

+0

http://api.jquery.com/not-selector/或http://api.jquery.com/not/怎麼樣? – Nebril

+0

@stackErr。 「......包含在特定元素中」。沒有什麼矛盾的。我已經嘗試過使用.not(),但這並不是鏈接本身擁有這個類。這是編輯框,它可以是父母之一。 – Zwirbelbart

回答

1

可以運行這個普通的JavaScript,它返回一個不是在您指定的容器匹配模式的所有元素。

var anchors = document.querySelectorAll('*:not(.editBox)>a.link'); 

假設你不想容器有一類「編輯框」中,你可以改變匹配的「鏈接」類是你想要的任何查詢選擇,可以是「A」的所有錨元素平原。我創建了一個JSFiddle作爲演示。

+0

我測試了您的解決方案,它似乎是一個好方法。我也很感激你的JSFiddle演示。謝謝! – Zwirbelbart

+0

我很高興它有幫助。 – joseeight

0

這並不都必須在一個選擇器上。您可以非常簡單地使用您的常規選擇器來捕捉所有元素,然後執行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)"); 

參考文獻:

相關問題