Я бы сделал:
not any((x[i] != x[i+1] for i in range(0, len(x)-1)))
as any
перестает искать итерацию, как только обнаруживает условие True
.
Простыми словами,
blockquote>
$(document).ready
- событие, которое срабатывает, когдаdocument
готов.Предположим, вы разместили свой jQuery кода в секции
head
и попытке доступа к элементуdom
(якорь, img и т. д.), вы не сможете получить к нему доступ, потому чтоhtml
интерпретируется сверху вниз, а ваши html-элементы отсутствуют, если ваш jQuery-код запускается.Чтобы преодолеть эту проблему, мы помещаем каждый код jQuery / javascript (который использует DOM) внутри функции
$(document).ready
, которая вызывается, когда доступны все элементыdom
.И именно поэтому, когда вы помещаете свой код jQuery внизу (после всех элементов dom, непосредственно перед
</body>
), нет необходимости в$(document).ready
. Существует нет необходимости размещать метод
on
внутри$(document).ready
только тогда, когда вы используетеon
метод наdocument
по той же причине, что я объяснил выше.//No need to put inside $(document).ready $(document).on('click','a',function () { }) // Need to put inside $(document).ready if placed inside <head></head> $('.container').on('click','a',function () { });
EDIT
Из комментариев
$(document).ready
не дожидается изображений или скриптов. Это большая разница между$(document).ready
и$(document).load
- . Только код, который обращается к DOM, должен быть в готовом обработчике. Если это плагин, он не должен находиться в готовом событии.
Прежде чем вы сможете безопасно использовать jQuery, вам нужно убедиться, что страница находится в состоянии, когда оно готово к манипулированию. С помощью jQuery мы выполняем это, помещая наш код в функцию, а затем передавая эту функцию в $(document).ready()
. Функция, которую мы передаем, может быть просто анонимной функцией .
$(document).ready(function() {
console.log('ready!');
});
Это запустит функцию, которую мы передаем .ready (), как только документ будет готов. Что тут происходит? Мы используем $ (document) для создания объекта jQuery из документа нашей страницы, а затем вызываем функцию .ready () для этого объекта, передавая ему функцию, которую мы хотим выполнить.
Поскольку это что-то, что вы сами будете делать много, для этого есть сокращенный метод, если вы предпочитаете - функция $ () выполняет двойную функцию как псевдоним для $ (document) .ready (), если вы передадите ей функцию:
$(function() {
console.log('ready!');
});
Это хорошее чтение: Основы JQuery
(function($){ })(jQuery);
, который обертывает ваш код так, что $ is jQuery внутри этого закрытия
– John Magnolia
5 November 2014 в 11:15
.ready () - задает функцию, выполняемую при полной загрузке DOM.
$(document).ready(function() {
// Handler for .ready() called.
});
Вот список из всех методов jQuery
Чтение на Представление $ (document) .ready ()
Чтобы быть реалистичным, document.ready
не требуется ни для чего другого, кроме как правильно манипулировать DOM, и это не всегда необходимо или лучший вариант. Я имею в виду, что когда вы разрабатываете большой плагин jQuery, например, вы вряд ли используете его во всем коде, потому что вы пытаетесь сохранить его DRY, поэтому вы максимально абстрактны в методах, которые управляют DOM, но предназначены для вызова позже. Когда весь ваш код плотно интегрирован, единственный метод, открытый в document.ready
, обычно init
, где происходит вся магия DOM. Надеюсь, это ответит на ваш вопрос.
Ответы:
Метод jQuery .on (): Я довольно часто использую метод .on () для AJAX (динамически создавая элементы DOM). Если обработчики кликов .on () всегда находятся внутри document.ready?
blockquote>Нет, не всегда. Если вы загрузите JS в головке документа, вам понадобится. Если вы создаете элементы после загрузки страницы через AJAX, вам нужно будет. Вам не нужно, если скрипт находится под элементом html, который вы добавляете обработчиком.
Производительность. Является ли более эффективным поддерживать различные объекты javascript / jQuery внутри или снаружи document.ready ( также, разница в производительности значительна?)?
blockquote>Это зависит. Для прикрепления обработчиков потребуется столько же времени, это просто зависит, хотите ли вы, чтобы это произошло сразу после загрузки страницы, или если вы хотите, чтобы он дождался загрузки всего документа. Таким образом, это будет зависеть от того, что вы делаете на странице.
Область объекта: страницы, загруженные AJAX, не могут получить доступ к объектам, находящимся внутри документа предыдущей страницы.
blockquote>Это, по сути, его собственная функция, поэтому он может получить доступ только к vars, объявленным в глобальной области (за пределами / выше всех функций) или с помощью
window.myvarname = '';
Вы должны привязать все действия в document.ready, потому что вам нужно дождаться, пока документ будет полностью загружен.
Но вы должны создавать функции для всех действий и вызывать их из документа document.ready. Когда вы создаете функции (ваши глобальные объекты), назовите их, когда захотите. Таким образом, как только ваши новые данные будут загружены и будут созданы новые элементы, снова вызовите эти функции.
Эти функции связаны с событиями и элементами действия.
$(document).ready(function(){
bindelement1();
bindelement2();
});
function bindelement1(){
$('el1').on('click',function...);
//you might make an ajax call here, then under complete of the AJAX, call this function or any other function again
}
function bindelement2(){
$('el2').on('click',function...);
}
Я добавил ссылку на div и хотел сделать некоторые задачи при нажатии. Я добавил код под добавленным элементом в DOM, но он не работал. Вот код:
<div id="advance-search">
Some other DOM elements
<!-- Here I wanted to apppend the link as <a href="javascript:;" id="reset-adv-srch"><span class="bold">x</span> Clear all</a>-->
</div>
<script>
$("#advance-search #reset-adv-srch").on("click", function (){
alert('Link Clicked');``
});
</script>
Это не сработало. Затем я поместил код jQuery внутри $ (document) .ready и работал отлично. Вот оно.
$(document).ready(function(e) {
$("#advance-search #reset-adv-srch").on("click", function (){
alert('Link Clicked');
});
});
Он готов к событию, когда DOM (объектная модель документа) загружена.
Поскольку это событие происходит после того, как документ готов, это хорошее место для всех других событий и функций jQuery. Как и в примере выше.
Метод ready () указывает, что происходит, когда происходит событие готовности.
Совет. Метод ready () не должен использоваться вместе с.
$(document).ready
. См. этот – Jashwant 25 October 2012 в 06:54head
, и вы выполняете скрипты после манипулирования элементами,document.ready
не требуется. Изображения - особый случай, хотя ... – elclanrs 25 October 2012 в 06:54jQuery
в готовый обработчик. Только код, который обращается к DOM. Если это плагин, он не должен находиться в событииready
– Juan Mendes 8 April 2013 в 19:40