Wie zwei CSS-Selektoren auf Javascript vergleichen?Wie zwei CSS-Selektoren zu vergleichen?
Zum Beispiel:
compare('.foo.bar', '.bar.foo')
kehrt true
,
compare('.foo.bar', '.foo .bar')
kehrt false
Wie zwei CSS-Selektoren auf Javascript vergleichen?Wie zwei CSS-Selektoren zu vergleichen?
Zum Beispiel:
compare('.foo.bar', '.bar.foo')
kehrt true
,
compare('.foo.bar', '.foo .bar')
kehrt false
'.foo.bar' is not the same as '.foo .bar'
Beachten Sie den Raum in '.foo .bar'
ZB:
<div class="foo"><p class="bar"></p></div> The tag P matches '.foo .bar'
<div class="foo bar"><p class="bar"></p></div> The tag DIV matches '.foo.bar'
Für diejenigen, die Vergleichsfunktion sucht, können Sie http://api.jquery.com/is/
document.body.textContent = $('.foo.bar').is('.bar.foo')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo bar"></div>
Vanilla JS Lösung verwenden:
document.body.textContent = compareSelector('.foo.bar', '.bar.foo');
function compareSelector (s1, s2) {
var a = document.querySelectorAll(s1);
var b = document.querySelectorAll(s2);
if (a.length !== b.length)
return false;
else {
for(var i=0; i<a.length; i++){
if (a[i] !== b[i]) return false;
}
}
return true;
}
<div class="foo bar"></div>
<p class="bar foo"></p>
Jemand möchte die Frage schließen, es ist zu breit. WTF !? – rafaelcastrocouto
Es gibt kein jQuery-Tag für diese Frage. –
Sie haben Recht David, ich würde gerne eine Vanille JS Lösung sehen, PLZ post es! – rafaelcastrocouto
Was ist der Anwendungsfall für diese Funktion, welches Problem versuchen Sie zu lösen? Und wie weit bist du gekommen, als du es selbst versucht hast? –
Ich versuchte es mit Regex. Es scheint schwer zu sein. Dann dachte ich daran, zwei Dummy-Elemente mit zwei sehr einfachen Stilregeln zu erstellen und dann die Regel –
zu vergleichen. Ihre Beispiele ergeben für mich Sinn, dass alles in Ordnung zu sein scheint. Verstehst du den Unterschied, den der Raum macht? –