.live()
требует немедленного запуска селектора, если только вы не используете результат, это очень расточительно.Здесь обработчик событий присоединен к document
, поэтому все события этого типа из любых пузырьков элементов должны быть проверены.Вот пример использования:
$(".myClass").live("click", function() { alert("Hi"); });
Обратите внимание, что оператор $(".myClass")
запустил этот селектор, чтобы найти все элементы с этим классом , даже если мы не заботимся о них , все мы хотел была строка ".myClass"
, чтобы соответствовать позже , когда click
события всплывают до document
.
.delegate()
фактически использует .live()
для внутреннего использования, но с контекстом.Селектор не запускается сразу, поэтому он уже более эффективен и не привязывается к document
(хотя может), он гораздо более локальный ... и все эти прочее события из других деревьев элементов, о которых вы не заботитесь, никогда не проверяются, когда всплывают ... опять же, более эффективные.Вот пример использования:
$("#myTable").delegate("td", "click", function() { alert("Hi"); });
Что же здесь произошло?Мы запустили $("#myTable")
, чтобы получить элемент для присоединения (по общему признанию, дороже, чем document
, но мы используем результат. Затем мы прикрепляем обработчик событий к этому (или к другим в других случаях)элементы. Только clicks
из в пределах этот элемент проверяется в селекторе "td"
, когда они происходят, а не из везде , как .live()
делает (поскольку все находится внутри document
).