Ich arbeite an der Implementierung einer dynamischen Gestaltungsfunktionalität in einem Wordpress-Design mithilfe von jQuery. Ich bin herausgefordert von der Tatsache, dass jQuery Inline-Stile verwendet, was dazu führen kann, dass verschachtelte Elemente von einem Selektor angesprochen werden, obwohl dieser Selektor in den CSS-Regeln keine Auswirkungen hat. Um zu veranschaulichen, was ich meine, sehen Sie sich bitte diese JSFiddle.Wie zu steuern (vermeiden) Styling von verschachtelten HTML-Elementen bei der Verwendung von jQuery, wenn Klassen keine Option sind?
HTML:
<p>
This is normal text
<br>
<br>
<em>This is italic text</em>
<br>
<br>
<strong>This is bold text</strong>
<br>
<br>
<strong><em>This is bold italic text</em></strong>
<br>
<br>
<em><strong>This is also bold italic text</strong></em>
<br>
<br>
</p>
<button>
Style it!
</button>
CSS:
p em strong,
p strong em {
color: red;
}
p strong {
color: blue;
}
jQuery:
(function($) {
$('button').on('click', function() {
$('p strong').css('color', 'turquoise');
});
})(jQuery);
Wie dargestellt, CSS Styling der fett gedruckten Text ist nur dann wirksam auf den fettgedruckten Text, wie erwartet, aber mit jQuery - mit dem gleichen Selektor ist die Instanz des fett gedruckten Kursivtexts, der das Tag als verschachteltes Tag hat, ebenfalls ein infiziert.
Ist es möglich, eine jQuery-Auswahl vorzunehmen, die die verschachtelten Elemente nicht enthält, wie im Beispiel? Natürlich, wenn ich Klassen verwenden könnte, wäre die Lösung einfach, aber ich kann in diesem Fall nicht.
Wenn ich die! Wichtige Option zu den ursprünglich rot gestylten Elementen hinzufüge, bekomme ich, was ich will, aber ich möchte das wirklich vermeiden, wenn überhaupt möglich. Vielen Dank.
Suchen Sie nach einem bestimmten Anwendungsfall? Oder dieses Problem im Allgemeinen? – jwatts1980
Ich denke, es deckt beide Kategorien ab. –
Nicht unbedingt. Sie können Übereinstimmungen von einer jQuery-Auswahl wie '$ ('p strong') .nicht ('p em strong'), die einen bestimmten Anwendungsfall lösen würden, ausschließen. – jwatts1980