Новый элемент отсутствует в DOM модели
Грузится страничка, создается DOM модель. Потом через jquery создается новый элемент которого нет в созданной DOM модели, следовательно когда на него ставишь какое нибудь событие его не нахид и не обрабатывает. Как сделать что DOM модель обновлялась или как правильно создавать новый элемент что бы он появлялся в DOM модели?(желательно через jquery)
var i=0; function addPlace(){ cena = $("#cena").val(); name = $("#name").val(); i += 1; $("#infoplaces").append('<div id="'+ i +'" class="getshowplaces">'+name + ' ' + cena +'</div>'); }; $(".getshowplaces").hover(function(){ alert('sdfsd'); }); |
Метод hover по идеи принимает два аргумента, а не один.
в остальном вроде всё верно, обновлять нечего не надо. Кстати cena и name логично бы локальными сделать, а то они у тебя глобальные. Ещё, я в твоём примере не вижу чтобы addPlace вызывался перед добавлением обработчиков событий ну хотя бы так должно быть. А то не ясно как это всё работает ) var i=0; function addPlace(){ var cena = $("#cena").val(), name = $("#name").val(); i += 1; $("#infoplaces").append('<div id="'+ i +'" class="getshowplaces">'+name + ' ' + cena +'</div>'); }; addPlace();// вызываем функцию создающую обьект на который в дальнейшем повесим обработчик $(".getshowplaces").hover(function(){ alert('пришли'); },function(){ alert("ушли") }); |
Не известно сколько будет добавленно эллементов, они должны добавляться по нажатию по ссылке
<a href="javascript:void(0)" onClick="javascript:addPlace()" >add</a> это у меня выше добавил addPlace(); - теперь просто добавляет пустой элемент при создании странички <div id="1" class="getshowplaces"> </div> и по наведению ничего опять не происходит... если я ручками прописываю элемент то hover срабатывает |
Всё замечательно. Но когда hover добавляется то ? Он же не может до создания элементов добавляться. Я бы добавлял его прямо в функции, после создания каждого элемента
var i=0; function addPlace(){ var cena = $("#cena").val(), name = $("#name").val(); i += 1; $("#infoplaces").append('<div id="'+ i +'" class="getshowplaces">'+name + ' ' + cena +'</div>'); // возможно лучше вешать на id чем на класс, но мы пока на class повесим $(".getshowplaces").hover(function(){ alert('пришли'); },function(){ alert("ушли") }); }; |
заработало, большое спасибо.
|
Часовой пояс GMT +3, время: 15:50. |