Несколько одновременно исполняемых селекторов
Добрый день.
Не знаю как это называется, но:
$(function(){
if ($('#da, #po, #projects, #opens, #effect, #potencial').is(':empty')) {
$('#person #face').addClass('empty');
};
});
как сделать что бы класс присваивался только тогда когда все из перечисленных селекторов пустые? Подскажите пожалуйста? Заранее спасибо! |
Цитата:
var o=$('#da, #po, #projects, #opens, #effect, #potencial');
if (o.filter(':empty').length==o.length) {
$('#person #face').addClass('empty');
};
Не проверял... :no: |
Может так?
$(function(){
if ($('#da, #po, #projects, #opens, #effect, #potencial').toArray().every(function(item){
return $(item).is(':empty');
})) {
$('#person #face').addClass('empty');
};
});
|
Спасибо, но не один из вариантов не подошёл(
|
|
Цитата:
Так даже не понятно с чем ты вообще имеешь дело... |
Прошу прощения.
Понял свою ошибку - объясню максимально конкретно)
<div id="person">
<div id="face"><img src="img.jpg"></div>
<div id="info"></div>
<div id="medal">
<div id="da"></div>
<div id="po"></div>
<div id="projects"></div>
<div id="opens"></div>
<div id="effect"></div>
<div id="potencial"></div>
</div>
</div>
В диве #medal есть дочерние дивы. Если они все пустые, без контента - то #face addClass .empty. |
emptyindorill, уже лучше... :)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.empty {
color: red;
}
</style>
<script type='text/javascript'>
$(function(){
var o=$('#medal > div');
if (o.filter(':empty').length==o.length) {
$('#face').addClass('empty');
};
});
</script>
</head>
<body>
<div id="person">
<div id="face">Empty</div>
<div id="info"></div>
<div id="medal">
<div id="da"></div>
<div id="po"></div>
<div id="projects"></div>
<div id="opens"></div>
<div id="effect"></div>
<div id="potencial"></div>
</div>
</div>
</body>
</html>
|
https://jsfiddle.net/knhz8u1L/1/
<html>
<head>
<title></title>
<script src='https://code.jquery.com/jquery-latest.js'></script>
<style>
.empty{
min-height:30px;
background:red;
}
</style>
</head>
<body>
<div id="person">
<div id="face"><img src="img.jpg"></div>
<div id="info"></div>
<div id="medal">
<div id="da"></div>
<div id="po"></div>
<div id="projects"></div>
<div id="opens"></div>
<div id="effect"></div>
<div id="potencial"></div>
</div>
</div>
<script>
$(function(){
$('#medal > div').toArray().every(function(item){
return $(item).is(':empty');
}) && $('#person').addClass('empty');
});
</script>
</body>
|
emptyindorill,
вам ksa давал код, и он рабочий.
var box = $('#medal').find('>div');
if(box.filter(':empty').length == box.length) ....
|
Уважаемые знатоки.
Спасибо Вам большое за помощь и обратную связь. По jsfiddle вижу что все варианты работают, но заметил один момент: https://jsfiddle.net/knhz8u1L/13/ https://jsfiddle.net/knhz8u1L/14/ https://jsfiddle.net/knhz8u1L/15/ Если родителей - #person больше одного, скрипт перестаёт работать. https://jsfiddle.net/knhz8u1L/17/ Пробовал через .each(), толку ноль. |
emptyindorill, id должен быть уникальным.
Используйте вместо "id" "class". Upd. https://jsfiddle.net/knhz8u1L/18/ |
Да, мне уже пояснили.
$('.person').each(function(){
if($(this).find('.medal > *').length == $(this).find('.medal > *:empty').length){
$(this).find('.face').addClass('empty');
}
});
Спасибо большое Вам и всем за оказанную помощь! |
Цитата:
|
$('.person').each(function() {
if(!$(this).find('.medal:has(>:not(:empty))').length) {
$(this).find('.face').addClass('empty');
}
});
|
Цитата:
Подскажите пожалуйста, а если всё-таки есть нужда в проверке, например, строки таблицы, на пустые td с классом каким-либо? Если класс такой + такой и + такой пустые то для tr .addClass или .css ? |
Цитата:
$('div:empty').parent().addClass('empty');
|
| Часовой пояс GMT +3, время: 05:08. |