Ich muss nur das Element show() in der foreach-Schleife von jquery abrufen
Im folgenden Code erhalte ich alle Elemente mit Klassentest (dh) sowohl ausgeblendet als auch angezeigt … aber es muss nur eines angezeigt und nicht ausgeblendet werden … wie kann ich das filtern und in dieser Zeile selbst abrufen?????
$('.element').find('.test').each(function(index, loopelement) {
}
Benutzen Sie die :visible
Wähler:
$('.element').find('.test:visible').each(function(index, loopelement) {
// do stuff...
});
Sie können verwenden jQuerys :visible Wähler.
var $visibles = $(".element").find(".test:visible");
Aber seien Sie sich bewusst, wie jQuery funktioniert. Aus der jQuery-Dokumentation:
Elemente gelten als sichtbar, wenn sie Platz im Dokument beanspruchen. Sichtbare Elemente haben eine Breite oder Höhe, die größer als Null ist.
Elemente mit Visibility: Hidden oder Opacity: 0 gelten als sichtbar, da sie immer noch Platz im Layout beanspruchen.
Falls dieses Verhalten nicht zu Ihrem Anwendungsfall passt, können Sie jQuery erweitern und Ihren eigenen benutzerdefinierten Selektor erstellen:
$.expr[":"].reallyVisible =
function reallyVisible (elem) {
if (elem == null || elem.tagName == null) {
return false;
}
if (elem.tagName.toLowerCase() === "script" || elem.tagName.toLowerCase() === "input" && elem.type === "hidden") {
return false;
}
do {
if (!isVisible(elem)) {
return false;
}
elem = elem.parentNode;
} while (elem != null && elem.tagName.toLowerCase() !== "html");
return true;
};
function isVisible (elem) {
var style = elem.style;
// Depending on your use case
// you could check the height/width, or if it's in the viewport...
return !(style.display === "none" || style.opacity === "0" || style.visibility === "hidden");
}
Er kann wie jeder andere integrierte Selektor verwendet werden:
$(".element").find(".test:reallyVisible");
$(".element").find(".test:first").is(":reallyVisible");
Es ist wirklich die Stunde wert (oder zwei, max), die es braucht, um das durchzulesen jQuery-API-Dokumentation Anfang bis Ende. Sie werden alle möglichen Dinge finden, von denen Sie nichts wussten (einschließlich der
:visible
Selektor Rory hat darauf hingewiesen).– TJ Crowder
19. Dezember 2012 um 10:01