Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Новый элемент отсутствует в DOM модели (https://javascript.ru/forum/jquery/21651-novyjj-ehlement-otsutstvuet-v-dom-modeli.html)

StrSprut 19.09.2011 12:05

Новый элемент отсутствует в 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');
});

DjDiablo 19.09.2011 12:17

Метод 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("ушли")
});

StrSprut 19.09.2011 12:33

Не известно сколько будет добавленно эллементов, они должны добавляться по нажатию по ссылке
<a href="javascript:void(0)" onClick="javascript:addPlace()" >add</a>
это у меня выше
добавил addPlace(); - теперь просто добавляет пустой элемент при создании странички
<div id="1" class="getshowplaces"> </div>
и по наведению ничего опять не происходит...

если я ручками прописываю элемент то hover срабатывает

DjDiablo 19.09.2011 12:40

Всё замечательно. Но когда 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("ушли")
       });
};

StrSprut 19.09.2011 12:50

заработало, большое спасибо.


Часовой пояс GMT +3, время: 15:50.