2014-03-24 4 views
0

Я хочу динамически создавать некоторые элементы div в моем контейнере. Я делаю это с простой функцией:jQuery .hide() не работает на динамически создаваемых элементах

function myFunction(volume){ 
for(var i = 1; i<= volume; i++){ 
$('.container').append("<div></div>"); 
} 

Проблема заключается в том, что сгенерированные элементы DIV не реагирует на мой JQuery .hide функции(). Кто-нибудь знает, почему он не работает? HTML отлично подходит как для ручных, так и для динамически создаваемых элементов.

я jsfiddle, но это своего рода сломаны тоже: http://jsfiddle.net/gQBen/

Мой вызов .hide функции()

$('div').mouseenter(function() { 
if (run){ 
$(this).hide(3000, function() { 
result++; 
run = false; 
rewrite(); 
}); 
} 
}); 

Aron решить в комментариях: http://jsfiddle.net/arunpjohny/SM38C/1/ спасибо!

+0

как вы вызываете функцию скрыть? – Merlin

+0

делегировать указатель мыши в контейнер – Huangism

+0

см. Http://jsfiddle.net/arunpjohny/SM38C/1/ –

ответ

3

вы должны использовать event delegation для этого

$(".container").on("mouseenter","div",function(e){ 

}); 

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

+1

В этом конкретном случае мероприятие можно прикрепить вместо .container div вместо – Huangism

+0

@Huangism я отредактировал ответ .. спасибо за sugestion –

0

Использование .onchange() вместо OnClick в опции

$('select').on('change',function(){ 
myFunction(this.value); 
}); 

также добавить значение опции

<option value="4" >4</option> 

Вам также необходимо использовать событие делегирования динамически добавляемых элементов

$(document).on('mouseenter','div',function() { 

DEMO

+0

работает для jsfiddle (очевидно, что вы демо), но не работает для вызова функции .hide (в вашей демонстрации) –

-1

UPDATE

Вопрос был обновлен так

$(".container").on("mouseenter","div",function(e){ 
    if (run){ 
     $(this).hide(3000, function() { 
      result++; 
      run = false; 
      rewrite(); 
     }); 
    } 
}); 
Смежные вопросы