Здравствуйте!
Простейшая задача – вывести значение display элемента div.
Для теста вывожу в консоль: console.log($('div.full-desc').css('display'));
Проблема в том, что всегда выводится "block", хотя в стилях задан "table". Пробовал через window.onload, $(document).ready и т.п. Помогло только при выводе с помощью setTimeout, но хочется понять, как можно сделать без этого.
То есть то что вы оставили 3 скриптовых подключения - это норм... Скорее всего ваш лесс фигачит свои стили, как вариант - скомпилить в православный цсс и не мучиться.
ThunderCat, Andrew, да, я в ответе ниже прокомментировал этот момент – проблема именно в LESS. Если подключить обычный CSS, то все ок. Но этот вариант не совсем устраивает, поэтому, может, у кого-то есть идеи. Спасибо.
ThunderCat, если блок скрыт, то сделать одно действие. Если не скрыт, то другое.
Andrew, как сделать работу скрипта без таймаута, но при этом не меняя LESS на CSS :)
Не очень понял про переопределение стилей. В стилях LESS указано table, а скрипт выдает block. Отсюда мысли, что мой скрипт срабатывает до того, как less.js преобразует все мои стили. То есть как бы мой скрипт не видит стилей вообще, поэтому берет стандартные значения: div = block, span = inline, table = table.
ThunderCat, это само собой, про table написал просто для теста. Если в LESS задано none, то скрипт показывает также block, если не пользоваться таймаутом.
Алексей, как вариант - вручную дописать в less.js в конец инициализацию ваших скриптов, или просто вписать там скрипт генерирующий кастомный евент, и ловить уже его.
Если помогло только setTimeout то значит есть вероятность того, что у вас скрипт стартует раньше загрузки страницы. Попробуйте запускать свой код только после полной загрузки сайта:
window.addEventListener('load', function() {
// Место под ваш код
});
Надим Закиров, в моем случае тоже не сработало, проверил через JSFiddle - все ок. Начал копаться в коде и пришел к выводу, что проблема в подключении less стилей, а не css. То есть если оставить все как было, но LESS файл преобразовать в CSS и подключить CSS, то работает. Но такой вариант не очень устраивает, поэтому может будут какие-то мысли на основе этой информации. Спасибо.
Алексей, ранее дел с LESS не имел, вряд ли помогу. Единственная умная мысль, это найти способ повесить обработчик на факт загрузки LESS и уже только после этого запускать код.