Jak źle zrobić ukryć ukryty element?Ukryj ukryty element ... Jak źle?
Załóżmy, że element #myelement
jest ukryty, a ja wykonuję numer $('#element').hide()
. Czy to złe? Czy powinienem najpierw sprawdzić, czy jest on widoczny?
Dzięki!
Jak źle zrobić ukryć ukryty element?Ukryj ukryty element ... Jak źle?
Załóżmy, że element #myelement
jest ukryty, a ja wykonuję numer $('#element').hide()
. Czy to złe? Czy powinienem najpierw sprawdzić, czy jest on widoczny?
Dzięki!
jQuery sprawdza czy element jest widoczny i ukrywa tylko wtedy, gdy jest to widoczne: https://github.com/jquery/jquery/blob/master/src/css.js#L78
} else if (!values[ index ] && !isHidden(elem)) {
jQuery._data(elem, "olddisplay", curCSS(elem, "display"));
}
więc nie trzeba przeprowadzić dodatkowe kontrole. Każda kontrola ręczna pogorszyłaby wydajność (i czytelność).
Jeśli ukryjesz element, który jest już ukryty, nic się nie wydarzy.
Jedynym sposobem, że jest "zły" jest to, że wykonuje kod, który nie musi być wykonany.
Można sprawdzić, czy jest ona ukryta użyciu jest():
if(!$("my-element").is(":visible")) {
$("my-element").hide();
})
Jednak powoduje to wykonanie innego kodu, który nie musi być (kod kontrolny). – Thilo
prawda, ale ten kod sprawdzający może być mniejszy niż wewnętrzny kod sprawdzania jQuery ...? Będę musiał je profilować, aby mieć pewność :) – danwellman
w przypuszczalnie częstszym przypadku (że element rzeczywiście potrzebuje ukryć), * oba * kontrole będą uruchamiane. – Thilo
Tylko hiding
, element nie trzeba by sprawdzić, czy element jest już hidden
lub nie, ale jeśli masz sprawę jak wtedy, gdy element jest następnie pokazać jeszcze zrobić coś innego, a następnie można użyć
if ($('your-element').is(':hidden')) {
$('your-element').show();
} else {
//do something else
}
Jeżeli istnieje wybór pomiędzy
$("my-element").hide();
i
if(!$("my-element").is(":visible")) {
$("my-element").hide();
})
jest o wiele prostsze (lepiej?), Aby po prostu mieć pierwszą linię dla czytelności sake. jQuery zrobi to, czy to zrobisz, czy nie.
Wygląda na to, że @zerkms powiedział już to samo. ** Powinienem ** naprawdę kliknąć na link "Ładuj nowy", myślę. – Abhilash
Lepiej sprawdzić widoczność elementu przed jego ukryciem.
$('#element').hide();
spowoduje to pewne problemy w przeglądarce Internet Explorer (IE9). Strona czasu nie ładuje się prawidłowo. Niektóre treści zostaną pominięte na stronie.
Poniższy kod jest znacznie lepszy.
if(!$("#myelement").is(":visible")) {
$("#myelement").hide();
})
To źle, jak pokazano element bloku! :) jeśli mówisz o jednym tylko elemencie .... nie zawracaj sobie głowy. Klienci czekają. –
Dlaczego ukryć ukryty element? Jaki jest tego cel? – Vucko
@ Vucko: Nie celowo. Tylko po to, aby uniknąć komplikowania kodu (z logiką niezbędną do uniknięcia zbędnego ukrywania). – Thilo