2012-03-11 2 views
1

Следующий фрагмент jquery говорит, подождите, пока документ будет готов.jQuery готовый метод

$(document).ready(function() { 
    // my code 
}); 

, что и другие объекты, которые могут быть переданы $() вместо параметра документа.

ответ

6

по docs:

The .ready() метод может быть вызван только на объект JQuery соответствующий текущий документ

Но мой Fiddle показывает, что это не так !!!

HTML:

<div id="gdoron"> 
    <input value='aaa' /> 
</div>​ 

JavaScript:

$('#gdoron').ready(function() { 
    alert($('#gdoron').html()); // alerts: "<input value='aaa' />" 
});​ 

alert($('#gdoron').html()); // alerts: "null" 

Может быть, что означало, что документы, что this внутри обработчика будет document объект, а не элемент, соответствующий селектору? (что верно ...)

Код, который сгореть обработчики readyList:

readyList.fireWith(document, [ jQuery ]); 

Во всяком случае, почему бы вам не использовать в document объект? это единственный объект DOM, который всегда будет определен, а не как body и т. д. '.


Все три следующих выражения эквивалентны:

  • $(document).ready(handler)
  • $().ready(handler) (это не рекомендуется)
  • $(handler)
+1

но если вы console.log на том, что это в коде скрипта, вы получите документ как ссылку не #gdoron, поэтому вы не можете использовать его, например: '$ (this) .addClass (" gdoron ")' – voigtan

+0

** + 1 ** Возможно, это то, что означали документы? Добавил его к моему ответу. благодаря! – gdoron

+0

на строке 435 (jQuery 1.7.1): 'readyList.fireWith (document, [jQuery]); 'там это;) (если вы хотите добавить это тоже?) – voigtan

1

jQuerys документация по ready говорит:

Метод .ready() может быть вызван только для объекта jQuery, соответствующего текущему документу, поэтому селектор можно опустить.

Большинство людей используют:

его короче и менее запутанной;)

+1

На самом деле, он короче и более запутанным (для новичков) ... – gdoron

1

.ready() метод может быть вызван только для объекта JQuery сопоставления текущего документа

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