2013-04-15 4 views
5

У меня есть элемент, который имеет границу CSS, и проблема в том, что элемент пуст, пока содержимое не будет заполнено jQuery, но граница будет нарисована CSS с самого начала. Я хотел бы иметь возможность сделать что-то вроде сделать видимость элемента скрытой, пока она не будет готова к отображению , а затем отобразить элемент и границу за один раз.Есть ли функция «элемент готова» в jquery?

Есть ли способ достичь этого?

Edit: код для отображения содержимого содержатся внутри

$(window).load(function() { 

} 
+0

когда вы хотите показать элемент? Любое конкретное событие? – PSL

+0

действительно ли мой ответ на редактирование? – byronyasgur

ответ

14

Метод 1

Одним из методов, вы можете попробовать бы настройки CSS элемента к display:none;. Это скроет элемент, и вызов следующей функции вызовет отображение элемента при загрузке DOM.

$(document).ready(function() { 
    // Put all of jQuery code in here 
    $("element").show(); // substitute element for whatever is needed 
}); 

Однако, я не хотел бы предложить этот метод, потому что будет внезапный скачок содержания после того, как JQuery выполняет, потому что display:none; означает, что не будет никакого следа элемента на странице

Метод 2

Лучший метод, на мой взгляд, заключается в использовании visibility:hidden. Это вызовет пространство, в котором элемент обычно должен появляться, но вместо элемента будет пустое пространство. Таким образом, когда страница загружается, не происходит внезапного скачка контента. Если вы используете этот метод, вам нужно будет использовать метод .css(), потому .show() существу настройки CSS элемента в display:block; Таким образом, код будет выглядеть следующим образом

$(document).ready(function() { 
    // Put all of jQuery code in here 
    $("element").css("visibility", "visible") // substitute element for whatever is needed 
}); 

Для обоих этих методов CSS будет сделать элемент скрытым, и эта функция ждет, пока весь DOM не будет загружен до его выполнения.

+0

OP просто добавляет пользовательский код справа befroe 'show()' –

+0

+1 Мне это нравится, но если бы это был один элемент, я бы, вероятно, просто установил inline 'style = 'display: none'' вместо видимости CSS , – AaronLS

+0

могу я положить doc.ready материал внутри window.load или он должен быть снаружи. на самом деле просто интересно, как сохранить код рядом с исходным кодом, потому что у меня есть хороший бит других связанных вещей в одном и том же блоке загрузки. – byronyasgur

2

Вы можете использовать JQuery addClass, чтобы добавить стиль, который получает границу, или, возможно, removeClass удалить класс скрытой display:none;

И ответить на ваш вопрос в заголовке, это document.ready, что вы ищете!

0

Вы можете использовать

$(function(){ 
    // your code here 
}); 

Так выше запускается на выполнение, когда DOM загружен. Теперь все, что вам нужно сделать, это показать ваш элемент, в котором visibility:hidden установлен в css.

+0

Когда вы используете display: none, элемент фактически не загружается. Вот почему многие рекомендуют видимость: скрытые. display: none также не занимает место dom, а видимость: скрытая и непрозрачность: 0 и то, и другое. –

-2

Вы попробовали .css()? Вы можете изменить css элемента. Подробнее here.

Первоначально задайте его как скрытый, затем удалите его.

+0

Я знаю, но на самом деле мой вопрос в том, когда/как это сделать, спасибо – byronyasgur

+0

Я вижу. Ответ Коди Гульднера - это путь! – Doon

2

Скрыть свой товар изначально.

$(function(){ 
    $('selector').hide(); // Or you can just have display:none 
    }); 

В какой-то другой раздел некоторое событие заполняет в DIV с некоторым содержанием

.... 
....//some code that fills in your content 
... 
$('selector').show(); 
.... 
.... 
0

Ready на элементах будут работать:

$(document.getElementsByTagName('div')[0]).ready(function() { 
// do stuff when div is ready 
0

Попробуйте это:

$('#element').bind("DOMSubtreeModified", function() { 
    //do stuff 
}); 
+0

Дефицит, см. Https://stackoverflow.com/questions/6659662/why-is-the-domsubtreemodified-event-deprecated-in-dom-level-3 – Lodewijk

Смежные вопросы