jQuery .hide () не запускается на динамически создаваемых элементах [duplicate]

0

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

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();
});
}
});

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

  • 0
    как вы вызываете функцию скрытия?
  • 0
    делегировать указатель мыши в контейнер
Показать ещё 2 комментария
Теги:

3 ответа

3
Лучший ответ

вы должны использовать делегирование событий для этого

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

});

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

  • 1
    В этом конкретном случае событие может быть прикреплено к .container div вместо
  • 0
    @ Huangism я отредактировал ответ .. спасибо за предложение
0

Используйте.onchange() вместо onclick в опции

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

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

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

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

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

DEMO

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

ОБНОВИТЬ

Вопрос был обновлен, поэтому

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню