2009-02-18 2 views
1

У меня есть скрипт, который выполняет операции DOM, чтобы изменить способ отображения div. Способ приложения, когда страница загружается, div отображается в исходном состоянии, функция управляет DIV. Проблема заключается в том, что он создает оригинальный div перед рендерингом измененного div.jquery/javascript ждет завершения функции

Я пробовал:

//Make div invisible 

//Call function to change the DIV 

//Make div visible 

Это не работает

+0

Вы хотите изменить DIV сразу, когда ваша страница загружается в браузере, или вы не хотите, чтобы изменения происходили постепенно? – strager

+0

Я не хочу, чтобы изменения происходили постепенно – 2009-02-18 23:18:21

+0

Какие изменения мы говорим? Если это достаточно просто, не делайте этого с JS вообще, попробуйте JS изменить класс элемента вместо этого - эффект будет мгновенным. – annakata

ответ

0
$('div').hide(function(){ 
$(this).css('font-size', '5em'); 
$(this).find('h1').css('color','red'); 
$(this).show(); 
}) 

Это должен работать;)

+0

Не можете ли вы связать это? $ (this) .css ('font-size', '5em'). find ('h1'). css ('color', 'red'). show(); – RSolberg

+0

@ Сольберг, да, вы можете. Тем не менее, менее читаемый. – strager

+0

@ Сольберг: если вы его цепью, то шоу() будет только на h1, а не на весь div. –

1

Вы используете атрибут видимости?

<div id="divy" style="display:none;">Wee</div> 

или установить стиль в .css файле

$(document).ready(function(){ 
    $("#divy").css("color", "#424242"); 
    $("#divy").show(); 
}); 
+0

как уже упоминалось выше в комментариях, никогда не скрывать контент по умолчанию – bandi

+1

говорит кто? Если состояние по умолчанию для объектов html скрыто, это необходимо. Этот элемент комментария скрыт по умолчанию! – hunter

+0

@Hunter - Это потому, что он использует AJAX для получения комментариев и, следовательно, не включен, если JavaScript отключен и имеет логический смысл в этом сценарии, чтобы скрыть по умолчанию. Я указал в своем комментарии, что при определенных обстоятельствах это плохая практика –

0

Если вы не хотите показывать сразу, вы должны просто скрыть его с помощью CSS (а не JS). Затем вы запустите свою функцию изменения и отобразите ее.

0

Вы просто пытаетесь сохранить видимость div, не допуская, чтобы изменения не были видны? Вероятно, вы могли бы сделать это, клонировав div, внеся изменения в клонированный div, а затем заменив оригинальный div клонированным, измененным div. Кое-что вроде:

var changed_cloned_div = make_changes($('#original_div').clone()); 
$('#original_div').replaceWith(changed_cloned_div);