2010-03-29 2 views
3

Я добавляю код на свою страницу, используя вызовы jQuery AJAX. Этот код представляет собой сочетание html и javascript. Но я хочу, чтобы javascript выполнялся только тогда, когда часть html готова. Но какое событие возникает при добавлении html?Html визуализируется событие

Вот пример:

<table id="sampleTable"> 
    ... 
</table> 

<script> 
    // this code should be executed only when sampleTable is rendered 
    $('#sampleTable').hide(); 
</script> 
+0

Когда вы говорите, что часть HTML готова, HTML возвращается из вызова AJAX, а затем вставляется в DOM и вы хотите, чтобы какой-нибудь JavaScript запускался, когда эта вставка была выполнена? Правильно ли я понял вас? –

+0

Да, вот что мне нужно. Но JavaScript также возвращается из вызова AJAX. – SiberianGuy

ответ

2

Оберните JavaScript в "готовом" обработчиком. Это срабатывает, когда DOM обновляется и, несомненно, вы хотите сделать.

$(function() { 
    $('#sampleTable').hide(); 
}); 
1
$(document).ready(function() { 
    $('#sampleTable').hide();  
}); 

http://api.jquery.com/ready/

+0

Я предпочитаю короткую вырезку '$ (function() {...});' – tvanfosson

+1

Я этого не делаю. Я также использую bind ('the-event'). Думаю, я особенный! – Matt

+1

+1 .bind FTW: D – Leo

6

Используйте готовые() событие JQuery:

$(document).ready(function() { 
    $('#sampleTable').hide(); 
} 

<edit> Казалось бы, невозможно назвать готовое событие на любом другом объекте, чем документ, мой плохой </edit>

Это вариант, если вы говорите abo ет событие срабатывает после успешного запроса Ajax:

$('#sampleTable').ajaxComplete(function() { 
    $(this).hide(); 
}); 

Или просто жёстко стиль таблицы для отображения: нет; ...

+0

А что, если он готов, прежде чем я подписался на «готовое» событие? – SiberianGuy

+0

@tvanfosson: Это не то же самое, я думаю? Он использует sampleTable.ready, ярлык - это документ.готово - если это возможно, никогда не слышал об этом раньше: D – Leo

+0

@Mef - Да. Я не смотрел на это достаточно близко - просто вырезать/вставить мой комментарий из другого ответа. Готовое событие применяется только к DOM (документу), а не к определенным элементам. Я бы использовал обработчик событий DOM ready. Для определенного элемента вам нужно будет использовать «load» - это немного отличается. – tvanfosson

1

Вы загружаетесь как <table> и <script> в документ однажды? Не.

Вставка HTML-кода с помощью <script> элементов на страницу с помощью html()/load() очень ненадежно. Сценарий не запускается напрямую с innerHTML; разные браузеры обрабатывают такие вставленные элементы скрипта по-разному. jQuery пытается исправить часть этого, но не совсем понятна (это может быть невозможно).

Лучше всего сохранить статический код в статическом сценарии, чтобы вызывающий абонент знал, что он должен вызвать hide() в таблице сразу после завершения вызова AJAX и вставки содержимого. Если у вас действительно есть, чтобы передать динамический код для запуска, сохраните его отдельно от HTML, например. возвращая объект JSON как с HTML, так и с элементами кода.

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