2017-02-27 112 views
1

我想獲得所有包含類menu-item-linkmk-image-link的元素。以下表達是否正確?獲取查詢選擇器全部多個條件

a[class*="menu-item-link"], a[class*="mk-image-link"] 

沒有得到選擇,所以我想不:)

感謝您的幫助任何東西。

最好的問候, 安東

+0

有沒有辦法,你有選擇的字符串未返回任何元素。 (此外,是否有一個原因,你使用屬性選擇器,而不是像普通人類那樣選擇類選擇器? – BoltClock

回答

3

你必須要做到這一點'a.menu-item-link, a.mk-image-link'它會檢查是否有這個類。

const selected = document.querySelectorAll('a.menu-item-link, a.mk-image-link') 
 
const selected2 = document.querySelectorAll('a.menu-item-link.js-smooth-scroll, a.mk-image-link.js-smooth-scroll') 
 

 
console.log(selected) 
 
console.log(selected2)
<div class="menu-item-link"><div> 
 
<div><div> 
 
<a class="menu-item-link"></a> 
 
<a class="mk-image-link"></a> 
 
<a class="mk-image-link menu-item-link"></a> 
 
<a class="menu-item-link js-smooth-scroll" href="/superfood-rezepte/">SUPERFOOD REZEPTE</a> <a href="...." target="_self" class="mk-image-link">

+0

Thanks @Maciej Kozieja:如果菜單項鍊接只是菜單項的一部分, item-link js-smooth-scroll'。所以我想選擇包含'menu-item-link'的everthing。我必須使用通配符嗎? – Toni2708

+0

@ Toni2708給出問題html –

1

document.querySelectorAll允許選擇器的分組。

請注意,它會選擇所有具有指定的class names的元素,因此不需要通配符。即如果你的目標是menu-item-linkmk-image-link以下應該適合你。

所以,你可以嘗試以下:

var elements = document.querySelectorAll("a[class~='menu-item-link'], a[class~='mk-image-link']"); // OR 
 
elements = document.querySelectorAll("a.menu-item-link, a.mk-image-link"); // Would both selects the same 
 
elements.forEach(function(element, index, array) { 
 
    element.style.backgroundColor = "#999"; 
 
});
<a class="js menu-item-link js-smooth-scroll" href="/superfood-rezepte/">SUPERFOOD REZEPTE</a> <br> 
 
<a class="js menu-item-link js-smooth-scroll-a" href="/superfood-rezepte/">SUPERFOOD </a> <br> 
 
<br> 
 
<a href="#" target="_self" class="mk-image-link">Something</a> 
 
<br> 
 
<a href="#" target="_self" class="mk-image-link1">Another Something</a> 
 
<br> 
 
<a href="#" target="_self" class="mk-image-link js-smooth-scroll-b">Another Something</a>

+0

謝謝你現在工作! – Toni2708