Zu finden, wenn das element ist sichtbar (JavaScript )
Ich habe eine javascript-Funktion, die versucht zu bestimmen, ob ein div-Element sichtbar ist, und führt verschiedene Prozesse mit Variablen. Ich bin erfolgreich in der Lage, swap-Sichtbarkeit eines elements durch ändern die Anzeige zwischen keiner und zu blockieren; aber ich kann nicht speichern Sie diesen Wert...
Ich habe versucht, immer die Elemente Anzeige von Attribut-Wert-und finden, wenn die element-ID ist sichtbar, aber weder gearbeitet hat. Wenn ich versuche .getAttribute es immer null zurück, ich bin nicht sicher, warum, weil ich weiß, dass die id wird definiert, und es verfügt über ein display-Attribut.
Hier ist der code der zwei verschiedene Methoden, die ich versucht habe:
var myvar = $("#mydivID").is(":visible");
var myvar = document.getElementById("mydivID").getAttribute("display");
Jede Beratung oder Hilfe wäre sehr geschätzt werden.
display
ist ein Mitglied derstyle
Eigenschaft, kein Attribut.- Ich habe versucht, mit sowohl sichtbaren als auch aber das funktioniert nicht zu. Also, wenn ich nicht Anrufe angezeigt, da es eine CSS-Eigenschaft und nicht eine JavaScript-Attribut, wie würde ich diese Spur?
- Wie definieren Sie "sichtbar"? Hat Elemente außerhalb des Viewports, zählt das auch? Tun
visibility: hidden
zählt auch? - Wie ist
$("#mydivID").is(":visible");
nicht funktioniert? I have tried getting the elements display attribute
- Ich denke, es kommt nicht das display Wert.- Ich bin mir nicht sicher, warum das sichtbare Methode hat nicht funktioniert... ich habe gelesen, etwa über das internet für eine Weile, bevor Sie Fragen hier, und Sie haben Leute gesagt, das sollte funktionieren; aber für einige Grund es didn ' T Arbeit in meinem Fall. Ich bin zwar in der Lage zu verwenden, die rufen, dass in diesem Fall $(this).is(':visible') ? divID : null; die Methode, die ich in meiner Frage nicht.
- Ahh ja, das war die Beantwortung der Frage falsch formuliert.
is(':visible')
funktioniert, also das problem liegt woanders, und bewegen Sie sich auf etwas anderes, dass im Grunde genommen die genau die gleiche Sache, die wahrscheinlich nicht viel helfen.- Also, was sind Sie versuchen zu finden? Der Stil
display
Wert? Oder ob das element sichtbar ist? Es ist viel mehr, um herauszufinden, ob das element sichtbar als nur Blick auf den Stildisplay
Eigenschaft - mögliche Duplikate von Prüfung, ob etwas versteckt ist mit jQuery
Du musst angemeldet sein, um einen Kommentar abzugeben.
Display ist kein Attribut, es ist eine CSS-Eigenschaft innerhalb der
style
Attribut.Suchen Sie vielleicht nach
oder
Versuchen wie diesem:
GEIGE
Bitte stellen Sie sicher, dass die jQuery-Datei in der
head
- tag, wie folgt$
definiert ist.display
Eigenschaft nicht, wenn das element sichtbar ist - "ich habe versucht, immer die Elemente Anzeige von Attribut-Wert"$("#mydivID").is(":visible")
, und die Antwort ist "Ok, dann versuchen, diese"$("#mydivID").is(":visible")
, die nicht fügen Sie alle nützlichen Informationen.display
Eigenschaft.is(":visible")
und.getAttribute()
. Sie scheinen zu wollen, zu wissen, ob es sichtbar ist, aber Sie versuchen auch nur, um seinedisplay
Stil. Wenn Sie möchten, um zu sehen, wenn es sichtbar ist, verwenden Sie.is(":visible")
die einen booleschen Wert zurückgibt. Wenn Sie diedisplay
- Eigenschaft verwenden: (korrekte code für das erhalten Sie)." und VerweiseWenn Sie möchten, tun Sie dies nur, javascript Art und Weise können Sie versuchen,
Nehmen wir eine zweite, um zu sehen, was
.is(":visible")
in jQuery, sollen wir?Hier ist ein link: https://github.com/jquery/jquery/blob/master/src/css.js#L529
return !jQuery.expr.filters.hidden( elem );
wo
So, es ist nur die überprüfung der offset-Breite und Höhe des Elements.
Sagte, und auch erwähnenswert ist, wenn jQuery prüft, ob ein element ist versteckt (also wie beim auslösen einer 'toggle' - Ereignis), es führt eine Prüfung auf die Anzeige-Eigenschaft und seine Existenz in der dom. https://github.com/jquery/jquery/blob/master/src/css.js#L43
return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");