this
はあなたがターゲットにしようとしている要素を参照していないため、期待どおりに動作していないです。既定では、this
はwindow
オブジェクトを指し、完全なコードは表示されませんが、これはおそらく起きていることです。
あなたはjQueryのセレクタを再指定することができ、次のいずれか
if ($(".flex-video").children().length === 0) {
$(".flex-video").css('display', 'none');
}
を...または変数でjQueryのセレクタを格納します。
var $flexVideo = $(".flex-video")
if ($flexVideo.children().length === 0) {
$flexVideo.css('display', 'none');
}
しかし、それは2つのスニペットことを指摘する価値があります複数の.flex-video
要素がある場合は、最初の要素のみをチェックしているため、上記のコードは機能しません。複数の要素がある場合は、.flex-video
要素のすべてを繰り返し処理する方がよいでしょう。以下のスニペットで
は、this
が.each()
方法がthis
値のコンテキストを提供するため、繰り返し処理されている現在.flex-video
要素にバインドされています。また
$(".flex-video").each(function() {
if ($(this).children().length === 0) {
$(this).css('display', 'none');
}
});
、あなたはまた、内部の条件付きチェックを作ることができますメソッドの文脈は、this
が.flex-video
要素にバインドされるためです。内部的には、上記の.each()
メソッドの例に似たすべての要素に対してjQueryが反復処理します。
$(".flex-video").css('display', function() {
return $(this).children().length === 0 ? 'none': '';
});
を ''ここで$(この)は何..あなたは働いていないものを詳しく説明していただけますか?そしてFYI、 'if'条件で' = 'を使うことは決してありません。:) –