2012-05-02 5 views
0

Был ли правильный синтаксис для использования jQuery's $().ready, чтобы проверить, готова ли DOM, а не создавать функцию обратного вызова после загрузки DOM?Проверка наличия документа

Например, я хочу запустить другой код, если DOM готов.

function checkDOMReady() 
{ 
    if ($(document).ready) 
     alert("The DOM was ready when this function was called"); 
    else 
     alert("The DOM was NOT ready when this function was called"); 
} 

Действительно ли это? Если нет, есть ли правильный способ сделать это?

EDIT: Я хорошо знаю $(document).ready(function(){}); и тому подобное, но это не то, что я ищу. У меня есть сценарий, который запускается каждые 10 минут, в том числе, когда страница изначально загружена, и я хочу запустить другой код, если документ готов, и другой код, если это не так. Я мог бы хранить эти данные в глобальной/статической переменной, но я хотел бы знать, можно ли просто оценить булевское выражение, чтобы проверить, можно ли манипулировать DOM.

+1

'$ (document) .ready (function() {// делать все, что угодно}); это будет сортировать вас с помощью document.ready и, если можно, вернемся сюда http://api.jquery.com/симпатичный пишущий сайт, есть хороший человек! –

+0

Der явно говорит, что он не хочет использовать функцию обратного вызова ... – Lucero

+0

О, я хорошо знаю об этом, но я запускаю тот же скрипт как перед загрузкой документа, так и каждые 10 минут, и мне нужно быть способный различать эти два. – azz

ответ

3

Я не понимаю, почему вы хотите это сделать. В любом случае вы можете иметь переменную, которая установлена ​​в обратном вызове документа и проверить переменную.

+0

I _could_ использовать глобальную переменную или передавать ее как параметр, но я хотел бы знать, возможно ли это, так как я запускаю скрипт как до загрузки документа, так и каждые 10 минут, и мне нужно иметь возможность чтобы различать их. – azz

+0

Я отметил это как правильное решение _a_, хотя это не совсем то, о чем я просил. – azz

3

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

var isready = false; 

    $(function() { 
    isready = true; 
    }); 

Подробнее об этом в here

+0

Опять же, я не хочу ждать, пока код будет выполнен наготове, я хочу, чтобы у него была возможность проверить, готова ли она сделать действие. – azz

+0

Сделал изменение, используя переменную, тогда вы можете легко проверить свой документ, если isready истинно, а затем выполнить то, что вам нужно. –

+0

Да, вот что я сделал. – azz

1

@Lucero прав, но есть некоторые случаи, когда требуется флаг, чтобы указать, что содержание готов к работе (возможно, синхронизировать с другим фреймворком ...). Если это так, то вы можете создать окно области видимости для сигнала и установите его значение на $(document).ready:

// declare your "global" flag as false 
window.flagDomLoaded = false; 

// set the global to true to signal that the contents are ready 
$(document).ready(function(){ window.flagDomLoaded = true; }); 

// check the global flag on your code 
function checkDOMReady() 
{ 
    if (window.flagDomLoaded) 
     alert("The DOM was ready when this function was called"); 
    else 
     alert("The DOM was <b>NOT</b> ready when this function was called"); 
} 

Обратите внимание, что я рекомендую вам использовать более стандартный подход, как @Lucero или @Sandeep решения. Это решение является приемлемым, если вы не можете этого сделать.

+0

Ну, это почти так, как у меня есть мой код прямо сейчас, если вы удалили экземпляры «window.'», который работает. Мне было просто любопытно, поддерживает ли jQuery такой метод (который, как представляется, нет). – azz

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