Es arbeitet ist nicht wie erwartet, da this
auf das Element bezieht sich nicht, dass Sie auf Ziel versuchen. Standardmäßig bezieht sich this
auf das Objekt window
, und ohne Ihren vollständigen Code zu sehen, ist dies wahrscheinlich der Fall.
Sie können entweder wieder geben Sie die jQuery-Selektor:
if ($(".flex-video").children().length === 0) {
$(".flex-video").css('display', 'none');
}
... oder speichern Sie die jQuery-Selektor in einer Variablen:
var $flexVideo = $(".flex-video")
if ($flexVideo.children().length === 0) {
$flexVideo.css('display', 'none');
}
jedoch
, ist es erwähnenswert, dass die beiden Schnipsel oben würde nicht funktionieren, wenn es mehrere .flex-video
Elemente gibt, weil Sie nur das erste überprüfen. Es wäre besser, über alle .flex-video
Elemente zu iterieren, falls es mehr als eins gibt.
Im Snippet wird this
das aktuelle .flex-video
Element gebunden, weil die .each()
Verfahren Kontext iteriert wird für den Wert this
bieten:
$(".flex-video").each(function() {
if ($(this).children().length === 0) {
$(this).css('display', 'none');
}
});
Alternativ können Sie auch den bedingten Scheck machen innerhalb der Kontext des .css()
-Verfahrens, weil this
an das Element .flex-video
gebunden ist. Intern wird jQuery über alle Elemente iterieren, die dem obigen Beispiel .each()
ähnlich sind.
$(".flex-video").css('display', function() {
return $(this).children().length === 0 ? 'none': '';
});
Was ist '$ (this)' hier .. Könnten Sie bitte erarbeiten was nicht funktioniert? und FYI, es funktioniert nie mit '=' in 'if' Bedingung .. :) –