jQuery: wilt dat antwoord op height () 0 is voor verborgen element

Er zijn een aantal berichten over het verkrijgen/instellen van de hoogte van verborgen elementen (bijv. this en this ).

Wat ik echter wil, is een hoogtequery die het antwoord 0 geeft voor verborgen elementen en de zichtbare hoogte voor zichtbare elementen. Ik kan het doen met een heleboel if -instructies, maar is er een eenvoudiger manier?

Bedankt.

0
Ik zou zeker de : visible selector kunnen gebruiken. Het is echter in een onresize-functie en er zijn een aantal controles die ik moet uitvoeren, dus hoe minder DOM-query's, hoe beter :)
toegevoegd de auteur Nick, de bron
post wat code en html als een verwijzing. Laat zien wat je hebt geprobeerd
toegevoegd de auteur charlietfl, de bron
Heeft u de 0 geretourneerd of Zou u de: visible selector in jQuery kunnen gebruiken om alleen de hoogte van zichtbare elementen te bekijken?
toegevoegd de auteur Brett Smith, de bron

1 antwoord

Je zou je eigen jQuery-methode kunnen maken die zou doen wat je wilt:

jQuery.fn.visHeight = function() {
    var h = this.height();
    if (h != 0 && !this.is(":visible")) {
        h = 0;
    }
    return(h);
};
6
toegevoegd
Bedankt. Ik doe hetzelfde, hoewel ik eerst zal nagaan of het visible is (aangezien het altijd de juiste hoogte heeft in de situatie waar ik mee te maken heb). Ik concludeer uit je antwoord dat er geen ingebouwde jQuery op is die dit voor je doet (wat de essentie van mijn vraag was).
toegevoegd de auteur Nick, de bron
Mate, ik weet niet precies waarom ik je 'het hele probleem' moest laten zien. Ik zou willen dat er niet veel onduidelijkheid in zit: "Wat ik echter wil, is een hoogtequery die het antwoord 0 geeft voor verborgen elementen en de zichtbare hoogte voor zichtbare elementen."
toegevoegd de auteur Nick, de bron
Bedankt. Zie alsjeblieft mijn algemene frustratie over deze site. Ik ben, met uitzondering van de vorige opmerking, onfeilbaar beleefd en zo duidelijk als ik kan zijn in mijn vragen. Ik ben echter moe van de flitsende verzoeken om "wat code en html als verwijzing te posten." Laat zien wat je hebt geprobeerd "(zoals hierboven), of onnadenkende, anonieme -1 antwoorden op volkomen legitieme inspanningen (bijv. stackoverflow.com/questions/11061414/… )
toegevoegd de auteur Nick, de bron
Bedankt, @SheikhHeera.
toegevoegd de auteur Nick, de bron
@ jfriend00 Ik accepteer dat dit waarschijnlijk "mijn slechte" is in het gewone spraakgebruik. Desalniettemin vind ik het een beetje gek dat een rechttoe rechtaan, "smalle" vraag vaak wordt geïnterpreteerd als een uitnodiging om kritiek te leveren en hypothetiseren over alle aannames die ten grondslag liggen aan de vraag. Ik geef ook toe dat je eigen non-respons op een paar van mijn eerdere luchtige opmerkingen/geklets niet de meest positieve houding heeft voortgebracht :) Toch waardeer en beveel ik je voor je service in de SO-gemeenschap.
toegevoegd de auteur Nick, de bron
Bedankt, @ jfriend00 Bedankt dat je de tijd hebt genomen om te reageren. Het is waarschijnlijk niet de moeite waard om door de details te gaan. Ik waardeer uw wens om situaties holistisch te behandelen. Vanuit mijn tijdgebrek perspectief is het echter vaak niet mogelijk of de moeite waard om het precieze scenario te beschrijven, aangezien de pagina waaraan ik werk duizenden elementen bevat en op sommige punten 15 lagen diep nestelt. Dus iemand vraagt ​​om meer details ('plaats je code') in een poging die hem/haar 40 seconden kost, en dan -1 als ik beleefd demur. Leven zonder 56K rep is een ander spel (zoals mijn vorige link laat zien) :)
toegevoegd de auteur Nick, de bron
@Nick, hij vroeg het alleen om de noodzaak van je werkelijke probleem te begrijpen en om je vraag op een betere manier te beantwoorden.
toegevoegd de auteur The Alpha, de bron
U hebt ons niet het hele probleem laten zien dat u probeert te coderen, maar u kunt de verborgen items van het jQuery-object in de eerste plaats gewoon verwijderen met een wijziging in de oorspronkelijke selector of een filter zodat u zelfs nooit verborgen items vraagt ​​voor hun lengte. Ik ken hier geen ingebouwde jQuery-mogelijkheden voor.
toegevoegd de auteur jfriend00, de bron
@Nick - Ik suggereer alleen dat er waarschijnlijk andere manieren zijn om het probleem op te lossen als je het probleem stroomopwaarts verplaatst en de verborgen items verwijdert voordat je naar de hoogte vraagt. Je hoeft het niet op die manier te doen als je niet wilt - gewoon een ander idee. Het is heel vaak hier op SO dat we een gedetailleerde vraag krijgen over één aspect van een oplossing wanneer er nog betere manieren zijn om het probleem op te lossen als het hele probleem wordt onthuld. Geen verplichting van uw kant om dat te onthullen, maar dat is waarom wij het soms vragen.
toegevoegd de auteur jfriend00, de bron
@Nick - veel vragen hier op SO zijn te smal. Ze vragen om een ​​klein stukje oplossing wanneer ze een minder efficiënt of verkeerd pad volgen en als ze het algehele probleem beschrijven dat ze proberen op te lossen, zijn er veel, veel betere manieren om het probleem te benaderen. Als ik les geef, denk ik dat ik het meeste voordeel heb als ik kan begrijpen wat het echte probleem is en misschien een nog beter pad bieden dan het exacte vraagstuk waar ze om vragen. Sorry als dat je stoort. Ik weet niet zeker wat je dacht dat mijn "non-respons" was. Ik ben een paar dagen offline.
toegevoegd de auteur jfriend00, de bron