Есть список новостей, в каждом элементе есть поля для картики и описания, если нет картинки то описание должно становиться на всю ширину элемента. Написал скрипт, который работает с jquery, ну когда я делаю обрамление в drupal behaverous то перебор элементов идет неправильно.
Drupal.behaviors.a_module = {
attach: function(context, settings) {
//удаление пустоты, если в новости отсутствует картинка
$('.view-id-news.view-display-id-page_list .views-row').each(function(i) {
console.log(i+'-элемент, '+$(this).eq(i).find('.group-right.field-group-div').length+'-длина');
if ($(this).eq(i).find('.field-name-field-new-img').length < 1) {
$(this).eq(i).find('.group-right.field-group-div').css('width', '100%');
}
})
}
};
}(jQuery));
обычный jquery не использую так как хочу чтобы и после ajax перезагрузки скрипт продолжал нормально выполняться.
пробовал писать и так:
$('.view-id-news.view-display-id-page_list .views-row', context).once().each(function(i) {
и так:
$('.view-id-news.view-display-id-page_list .views-row').once().each(function(i) {
но результат одинаковый скрипт почему то не находит нужный элемент точнее его отсутствие
и вообще считает длину html кода неправильно. Подскажите что где прописать чтобы перебор заработал как надо?
Вложение | Размер |
---|---|
snimok.png | 214.4 КБ |
Комментарии
со стилями все нормально скрипт считает длину html элемента непрпаильно.
Решил проблему написав следующее:
$(this, i).find('.group-right.field-group-div').css('width', '100%');
}
А зачем тут вообще js?
Чтобы флоатами не ровнять, не подходит потому что неуниверсально, в зависимости от того, какие ещё блоки будут выводиться на этой странице, float может их испортить. Задача состоит в том, что, если картинки нет то контент растягивается на всю ширину контейнера, ещё можно решить с помощью флексбоксов но пока не все браузеры нормально поддерживают. JS надёжно.
Задача написать универсальный web -скрипт, задачу решил
Это каким же образом?)
Да примеров масса, в день по несколько раз править приходится. ну хочу вдаваться в подробности, достаточно много времени уйдёт чтобы написать примеры.
Тем более вопрос не принципиальный, не хочу время тратить на объяснения. Если проблем не возникает - ровняйте флоатами. В отдельных случаях ими обхожусь.
Пересмотрите свою верстку)
Что за бред? Вешаете флоат на свою картинку (а скорее всего он там у вас уже висит). Если картинка пустая - не выводим ничего. И всё.
Не бред а неиспользование флоатов, проблему не 1 день знаю, понимаю о чем пишу. Флоаты однозначно использовать не буду. Вопрос Был помочь со скриптом и с тем чтобы, он правильно выполнял перебор и условте условие.
В данном вопросе я не прошу убедить меня использовать флоаты. Условие могло быть и другое, если нет картинки - задать элементу списка цвет, фон, и т.д. Мне принципиально разобраться с работой скрипта на drupale, может быть кто то уже сталкивался с подобным поведением
Если нет картинки и не умеете юзать флоаты, вешайте соотв. класс, но использовать js для этого неверный подход.
Интересно, а как вы тогда выводили в одну строку картинку и описание?