Zaznacz wszystkie elementy, które mają określony CSS, używając jQuery
Jak mogę wybrać wszystkie elementy, które mają określoną właściwość CSS, używając jQuery? Na przykład:
.Title
{
color:red;
rounded:true;
}
.Caption
{
color:black;
rounded:true;
}
Jak wybrać właściwość o nazwie "rounded"?
Nazwa klasy CSS jest bardzo elastyczna.
$(".Title").corner();
$(".Caption").corner();
Jak zamienić te dwie operacje na jedną operację. Może coś takiego:
$(".*->rounded").corner();
Czy jest na to jakiś lepszy sposób? 6 answers
Nie można (używając selektora CSS) wybierać elementów na podstawie właściwości CSS, które zostały do nich zastosowane.
Jeśli chcesz to zrobić ręcznie, możesz wybrać każdy element w dokumencie, zapętlić go nad nim i sprawdzić obliczoną wartość właściwości, którą jesteś zainteresowany (prawdopodobnie zadziała to tylko z prawdziwymi właściwościami CSS, a nie zmyślonymi, takimi jak rounded
). To również byłoby powolne.
Aktualizacja w odpowiedzi na edycje - selektory grup :
$(".Title, .Caption").corner();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 06:48:01
To jest dwuletni wątek, ale nadal był dla mnie przydatny, więc może być przydatny dla innych. Oto co zrobiłem:
var x = $('.myselector').filter(function () {
return this.style.some_prop == 'whatever'
});
Nie tak zwięzłe, jak bym chciał, ale nigdy nie potrzebowałem czegoś takiego, z wyjątkiem teraz, i to nie jest zbyt wydajne do ogólnego użytku, jak to widzę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-14 03:43:29
Dziękuję, Bijou. Użyłem Twojego rozwiązania, ale użyłem jQuery .css zamiast czystego javascript, jak to:
var x = $('*').filter(function() {
return $(this).css('font-family').toLowerCase().indexOf('futura') > -1
})
Ten przykład wybierze wszystkie elementy, w których wartość atrybutu font-family
zawiera "Futura".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 16:36:00
Podobne do Bijou ' s. tylko trochę ulepszenia:
$('[class]').filter(function() {
return $(this).css('your css property') == 'the expected value';
}
).corner();
Myślę, że użycie $('[class]') jest lepsze:
- nie ma potrzeby kodowania selektora(ów)
- nie sprawdzi wszystkich elementów HTML jeden po drugim.
Oto przykład.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-14 04:57:17
Oto czyste, łatwe do zrozumienia rozwiązanie:
// find elements with jQuery with a specific CSS, then execute an action
$('.dom-class').each(function(index, el) {
if ($(this).css('property') == 'value') {
$(this).doThingsHere();
}
});
To rozwiązanie jest inne, ponieważ nie używa narożnika, filtra ani powrotu. Jest celowo stworzony dla szerszej grupy użytkowników.
Rzeczy do zastąpienia:
- Zastąp ".dom-klasa " z Twoim selektorem.
- Zastąp właściwość CSS i wartość tym, czego szukasz.
- Zastąp " doThingsHere()" tym, co chcesz wykonać na tym znaleziony element.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-22 02:25:51
Własne właściwości CSS nie są dziedziczone, więc muszą być stosowane bezpośrednio do każdego elementu (nawet jeśli używasz js do dynamicznego dodawania właściwości, powinieneś to zrobić dodając klasę), więc...
CSS
.Title
{
color:red;
}
.Caption
{
color:black;
}
HTML
Nie musisz definiować właściwości rounded:true. Wystarczy użyć obecności klasy "zaokrąglonej":
<div class='Title Rounded'><h1>Title</h1></div>
<div class='Caption Rounded'>Caption</div>
JS
jQuery( '.Rounded' ).corner();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 00:17:39