инициализировать div после создания jquery - PullRequest
0 голосов
/ 27 февраля 2010

У меня есть следующий код для отображения div на странице

<div id="all_users">

 <div id=user11 userid=11 class=innertxt><img src=images/images.jpg width=50 height=50>    
 <strong>User11</strong>
  <ul> <li>Email: user11@uaer11.com</li>
  <li> <input type=checkbox id=select11 value=11 class=selectit /></li>
  </ul> </div>
 <div class="float_break"></div>

  </div>  

следующий код работает нормально и выведите «test in window»

         $('#all_users .selectit').click(function() {
         console.log("test");
         });

но когда я добавил div из следующего кода, он не показывал «test in log logs», это означает, что это событие нажатия не активировано

         var new_data_var = $('<div class="innertxt" userid="1" id="user1"> <img height="50" width="50" src="images/images.jpg"><strong>Test User 01</strong><ul><li>User ID: 1</li> <li>Email: user1@nodomain.com</li><li style="padding-top: 5px;"><input type="checkbox" class="selectit" value="1" id="select1"><label for="select1">&nbsp;&nbsp;Select it.</label></li></ul></div>');
       $('#all_users').append(new_data_var);

событие не вызывается?

Спасибо

Ответы [ 4 ]

2 голосов
/ 27 февраля 2010

Вы должны использовать live ():

Привязывает обработчик к событию (например, нажмите) для всех текущих - и будущее - подобранный элемент.

Например:

$('#all_users .selectit').live('click', function() {
    console.log("test");
});

Прямо сейчас вы используете click (), который делегирует bind ().

Основное отличие состоит в том, что live, вопреки связыванию, работает и с вновь созданными элементами DOM.

1 голос
/ 28 февраля 2010

Вы должны проверить, что ваша привязка щелкает после создания элемента dom или заменить bind на live, которые ведут себя аналогично, но также влияют на еще не существующий элемент.

ps: значения вашего атрибута html должны быть заключены в кавычки. например, type=checkbox => type="checkbox"

1 голос
/ 27 февраля 2010

live () метод должен решить эту проблему:

  $('#all_users .selectit').live('click', function() {
    console.log("test");
  });

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

Источник: http://api.jquery.com/live/

0 голосов
/ 28 февраля 2010

Если вы устанавливаете событие click до создания поля ввода, событие щелчка не будет зарегистрировано - оно будет регистрировать событие щелчка только для элементов DOM, которые существуют в это время. Вы можете создать поле ввода перед вызовом $('#all_users .selectit').click(function() { ... или с помощью функции live () , как предложили другие, которая будет прикреплять событие click для всех элементов, соответствующих селектору, и всех элементов в будущем. .

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