jquery - Задать стиль элементу, до загрузки.


1

Есть конструкция:

<script>
//здесь необходимо задать стиль элементу div к примеру color:#fff
</script>
<div class="some_div"></div>

P.S. Убедительная просьба воздержаться от ответов типа, лучше поменять структуру, так никто не делает. варианты типа document.write(<style></style>); и $(document).ready() тоже не подходят.

  •  1770
  •  4
  • 11 янв 2012 2012-01-11 06:44:02
Вопрос выглядит примерно так - как, не имея переменной, с ней работать. В общем случае ответ элементарно прост - НИКАК, вы все-равно ждете загрузки, каким образом - вопрос 10ый. PS: хотите изменить стиль "до загрузки"? css для этого есть, не? -_- — 11 янв 20122012-01-11 07:52:28.000000
можно определить какой-то дефолтный предварительный стиль и потом его обновлять в зависимости от дальнейших манипуляциях или прятать дивы пока они не обновятся — 11 янв 20122012-01-11 07:22:38.000000
стиль присваивается по условию, смысл в том, что в скрипте вызывается функция к примеру change_div(".some_div") в качестве селектора в параметрах, и все дивы с нужным селектором приобретают определенные свойства. можно и в стилях прописать и подгружать но хотелось бы найти элегантное решение по принципу live в jQuery. — 11 янв 20122012-01-11 06:59:51.000000
а в чем у вас загвоздка, див при загрузке страницы выглядит не так и нет возможности ждать загрузки дом чтобы поменять его стиль? — 11 янв 20122012-01-11 06:53:21.000000
Пахнет костылем... В css задать стили никак? — 11 янв 20122012-01-11 06:48:50.000000

4 ответа

1

Решение: Любая задача решается штатными методами. Вопрос: Что мешает выставить стиль после инициализации дива ? Может грамотно продумывать архитектуру скрипта и есть решение ?

0

Непонятно как это до загрузки, если честно. Это ж все будет исполнятся конкретно браузером. И как Вы это хотите сделать без jQuery(document).ready() то же не очень понятно. Если я хоть отдаленно понял Ваш вопрос, то можно поступить так:

<script>

//--------
// Здесь блок необходимых настроек и изменений стилей
jQuery(.some_class).css(color,red);
// и т.д.
//--------

jQuery(document).ready(function(){
// Как ни крути, но ready нужно, что бы отделить момент 
// полной и неполной загрузки документа
// Далее будем привязывать события и т.д., прим:
jQuery(.some_class).click(function(){
console.log(Console echo by some_class);
});
});

</script>
  • 11 янв 2012 2012-01-11 07:36:09
без ready делается просто - вставляется скрипт сразу после загрузки всех нужных дивов с .some_class, они уже есть на странице и скрипт их найдет, остальные нас не интересуют. Правда этот метод костыльный и не удобный. — 11 янв 20122012-01-11 07:39:56.000000
0

Вот еще одно нелепое решение:

<script>
setInterval(function() {
    $(.some_div).css(color,#F00);
}, 1);
</script>
<div class="some_div">111</div>
<div class="some_div">222</div>
<div class="some_div">333</div>
  • 11 янв 2012 2012-01-11 07:31:36
Дык, а зачем тормозить? Пусть себе раскрашивает div-ы до потери пульса )) — 11 янв 20122012-01-11 07:41:33.000000
Да, если еще использовать какой-нибудь флаг с последующим clearInterval - вполне замечательно. Как жалко, что нельзя указать в качестве интервала 0.1 или 0.01! — 11 янв 20122012-01-11 07:33:28.000000
1

Сама ситуация нелепа. Вот вам нелепое решение:

<script>
    setTimeout(function() { $(.some_div).css(color, #fff); }, 10000);
    // таймуат - примерное время загрузки нужных элементов
</script>
<div class="some_div"></div>

Решения на основе .load не подойдут, ибо это событие не "всплывает" ни в одном браузере.

да согласен нелепая, связано это с тем что хочется найти альтернативные решения очевидному document.write(), искренне надеюсь, что получится. — 11 янв 20122012-01-11 07:50:58.000000