Новый элемент отсутствует в 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, время: 03:50. |