Как вызвать метод объекта, обрабатывающий ещё не существующий элемент?

Допустим мне нужно обработать элементы в контейнере fancybox (который появляется по клику на кнопку).
Например, покажем "имя" при наведении на элемент 'div' в появившемся fancybox.

не работает, как такая конструкция:
var obj = {
show: function() {
        $('body div').mouseover(function() {
                $('.name', $(this)).show();
        } );
    }
}
$(function( {
    obj.show();
});

так и такая:
var obj = {
show: function() {
        $('body').on('mouseover', 'div',
            function() {
                $('.name', $(this)).show();
            }
        );
    }
}
$(function(){
    obj.show();
});
  • Вопрос задан
  • 2263 просмотра
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Зачем вы отслеживаете событие в body? Раз уж используете всплытие, так делайте это правильно, а не наполовину.
И уж если обращаться к body, то вот так $(document.body).

var obj = {
	show: function () {
		$(document).on('mouseover', 'div', function () {
			//this — это div
			...
		});
	}
}
obj.show();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@nicenice Автор вопроса
Работает такая конструкция:
$(function(){
    $('body').on('mouseover', 'div',
            function() {
                $('.name', $(this)).show();
            }
        );
});

Но мне нужно вызвать её через метод объекта...
Ответ написан
Комментировать
iusfof
@iusfof
Front-end developer
ваше
$(function(){
    obj.show();
});

эквивалентно
$(function(){
  function() {
    $('body').on('mouseover', 'div',
      function() {
        $('.name', $(this)).show();
      }
    );
  }
});


попробуйте вместо
var obj = {
show: function() {
        $('body div').mouseover(function() {
                $('.name', $(this)).show();
        } );
    }
}


сделать так:
var obj = {
  show: $('body').on('mouseover', 'div',
    function() {
      $('.name', $(this)).show();
    }
  );
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект