Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2013, 21:01
Новичок на форуме
Отправить личное сообщение для Fabio Посмотреть профиль Найти все сообщения от Fabio
 
Регистрация: 23.07.2013
Сообщений: 4

Недоступен элемент после append
Здравствуйте! Такая ситуация, с помощью javascript добавляю на страницу элемент div с определенным классом, при нажатии на который должно выскакивать alert сообщение. Ситуация такая, если элемент с данным классом загружается со страницой, то при нажатии на него сообщение показывается, а если элемент добавлен с помощью append то вывод сообщения не работает. Подскажите, в чем может быть причина.
$(document).ready(function(){
   $('button').click(function(){
         alert('ok');
});
   $('add').click(function(){
          $('container').append('<div class="button"></div>');
});
})

Последний раз редактировалось Fabio, 23.07.2013 в 21:04.
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2013, 21:07
Интересующийся
Отправить личное сообщение для AfraidAlex Посмотреть профиль Найти все сообщения от AfraidAlex
 
Регистрация: 21.05.2013
Сообщений: 19

ты сначала вешаешь обработчик, а потом добавляешь элемент. В JS тоже все последовательно.

$(document).ready(function(){
   

   $('add').click(function(){
          $('container').append('<div class="button"></div>');
          $('button').click(function(){
                   alert('ok');
                   });
          })
});
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2013, 21:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Fabio,
ставьте клик с помощью on потом добавляйте новые элементы когда захотите и для классов точку незабывайте
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2013, 21:43
Новичок на форуме
Отправить личное сообщение для Fabio Посмотреть профиль Найти все сообщения от Fabio
 
Регистрация: 23.07.2013
Сообщений: 4

Сообщение от AfraidAlex Посмотреть сообщение
ты сначала вешаешь обработчик, а потом добавляешь элемент. В JS тоже все последовательно.

$(document).ready(function(){
   

   $('add').click(function(){
          $('container').append('<div class="button"></div>');
          $('button').click(function(){
                   alert('ok');
                   });
          })
});
Спасибо работает
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2013, 01:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

AfraidAlex, если два раза нажать add то на первую кнопку будет навешано два обработчика сразу, и так далее кри каждом клике. Как вариант - $('button:last')
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2013, 17:59
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

$(function(){
   $('.button').live('click', function(){
      alert('ok');
   });
   $('add').click(function(){
      $('container').append('<div class="button"></div>');
   });
})
Ответить с цитированием
  #7 (permalink)  
Старый 24.07.2013, 18:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Ruslan_xDD
live
а почему не on?
Ответить с цитированием
  #8 (permalink)  
Старый 25.07.2013, 04:01
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

рони, можно и on, но я предпочитаю live, так как особой разницы не вижу. Или есть большие сходства?
Ответить с цитированием
  #9 (permalink)  
Старый 25.07.2013, 04:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Ruslan_xDD
но я предпочитаю live, так как особой разницы не вижу
Во, первых, live обозначен как deprecated. А это значит что однажды тебе придется его все-же заменить на on.
Во-вторых, через on можно назначить элемент-обработчик, тогда как в live жестко вшит document. В большинстве случаев это излишне и нужен более специфический элемент.
В-третьих, при навешивании live() делается лишняя работа по поиску элементов, совпадающих с селектором.
Ответить с цитированием
  #10 (permalink)  
Старый 25.07.2013, 15:12
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

danik.js, теперь буду знать
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JQuery Проблема с append после клонирования талицы vuler Общие вопросы Javascript 0 04.04.2012 00:28
Добавить элемент после элемента КодерJS Общие вопросы Javascript 12 28.10.2011 10:15
После функции append удалить элемент который появился shaltay jQuery 9 07.06.2011 16:19
как удалить элемент который идет после элемента .form? FRIE jQuery 2 03.06.2011 14:35
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11