Как это возможно с jQuery? - PullRequest
1 голос
/ 13 мая 2011

Я пытаюсь привязать определенные обработчики кликов и т. Д. К динамически загружаемому элементу.Мой крючок для добавления этих обработчиков - это событие "ready" элемента.Тем не менее, я обнаружил, что когда я присоединяюсь к обработчикам кликов, элемент не определен.Как это возможно, что следующее предупреждение показывает «0»?

<script language="javascript">
  $('#widget').ready(function(){
      alert($('#widget').length);
  });
</script>

Редактировать:

Я фактически сделал описанное обстоятельство настолько простым, насколько это возможно.На самом деле, это немного сложнее, так как я действительно хочу прикрепить события к элементам, содержащимся в #widget.Что я действительно ищу, так это надежный способ определить, когда #widget завершил загрузку, чтобы я мог получить доступ к элементам внутри него.

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Я не думаю, что вы можете вызвать ready() для чего угодно, кроме document.

Если вы хотите присоединить обработчики к элементам, которых еще нет в DOM, используйте live(), чтобы связать ихили присоедините обработчик события к непротиворечивому родителю и изучите which.target, когда событие всплывает (в значительной степени то, что делает live()).

2 голосов
/ 13 мая 2011

Посмотрите на метод jQuery live .Он прикрепляет обработчик к событию для всех элементов, которые соответствуют текущему селектору, теперь и в будущем .

$('#widget').live('click', function() {
  alert('#widget clicked');
});

Таким образом, когда новые элементы добавляются в документ с идентификатором#widget, они получат обработчик клика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...