Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как правильно определить делегирование событий? (https://javascript.ru/forum/events/60027-kak-pravilno-opredelit-delegirovanie-sobytijj.html)

Coriolan161 07.12.2015 22:07

Как правильно определить делегирование событий?
 
Привет! Есть два вопроса:victory: . По поводу первого: у меня есть n-ое число инлайн-блоков. При hover на каждом блоке у меня происходит выполнение набора анимаций. Но анимация срабатывает сразу на ВСЕХ блоках.

$('.capabilitySection-block').hover(
	function(){
	    $('.capabilitySection-label').animate({paddingTop:'0px'},'slow');
            $('.capabilitySection-block').css('background','none');
	    $('.capabilitySection-comment').animate({opacity:'1'},'slow');
	 },
         function(){
            $('.capabilitySection-label').animate({paddingTop:'120px'},'slow');
            $('.capabilitySection-block').css('background','url(....)');
            $('.capabilitySection-comment').animate({opacity:'0'},'slow');
});

Первый вопрос: как определить выполнение анимаций только для элемента (ОДНОГО), на которого наведена мышь ??

У меня есть мысли :write: (я не лентяй). Я правильно понимаю, что надо .hover() сделать для РОДИТЕЛЯ моих блоков?

То есть я пишу:
$('.capabilitySection').hover=function(event){
		var target=event.target;
		if (target.className!='.capabilitySection-block') return;

               // а вот тут как быть? Добавить элементы из верхнего скрипта?

}


:victory: Второй вопрос: при всех этих наведениях у меня почему-о не функционирует .css('background','url(....)'); Изображение изначально задано бекграундом, а по наведению (задумка) удаляется. Но этого не происходит:blink: . При этом URL у меня правильный.

рони 07.12.2015 22:17

Coriolan161,
html напишите
или как обычно ...

$('.capabilitySection-label', this).stop(true, true).animate({paddingTop:'0px'},'slow');

и лучше переписать hover на mouseenter и mouseleave
ну и вместо 'background' терзайте backgroundImage

Coriolan161 07.12.2015 22:48

рони,
<div class="capabilitySection">
    <div class="capabilitySection-block">
        <p  class="capabilitySection-comment">Появляющийся коммент</p>
        <p  class="capabilitySection-label">Подпись</p>
    </div>
<!--..... и таких блоков (capabilitySection-block)ещё пятеро-->
</div>

Coriolan161 07.12.2015 23:42

рони, я сделал))) за идею с разделением hover спасибо

рони 07.12.2015 23:44

hover jquery проблемы
 
Coriolan161,
css сразу добавить, не судьба было ...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      .capabilitySection-block{
        height: 80px;
        float: left;
         width: 300px;
         background-image:  url(http://javascript.ru/forum/images/ca_serenity/misc/logo.gif);
          background-repeat: no-repeat;
         background-size: 100% 100%;
      }
      .capabilitySection-label{
        padding-top: 120px;
      }
      .capabilitySection-comment{
        opacity:0;
      }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function() {
      $('.capabilitySection-block').on({
          mouseenter: function() {
              $('.capabilitySection-label', this).stop(true, true).animate({
                  paddingTop: '0px'
              }, 'slow');
              $(this).css('backgroundImage', 'none');
              $('.capabilitySection-comment', this).stop(true, true).animate({
                  opacity: '1'
              }, 'slow');
          },
          mouseleave: function() {
              $('.capabilitySection-label', this).stop(true, true).animate({
                  paddingTop: '120px'
              }, 'slow');
              $(this).css('backgroundImage', 'url(http://javascript.ru/forum/images/ca_serenity/misc/logo.gif)');
              $('.capabilitySection-comment', this).stop(true, true).animate({
                  opacity: '0'
              }, 'slow');
          }
      });

  });

  </script>
</head>

<body>

<div class="capabilitySection">
    <div class="capabilitySection-block">
        <p  class="capabilitySection-comment">Появляющийся коммент</p>
        <p  class="capabilitySection-label">Подпись</p>
    </div>
    <div class="capabilitySection-block">
        <p  class="capabilitySection-comment">Появляющийся коммент</p>
        <p  class="capabilitySection-label">Подпись</p>
    </div>
<!--..... и таких блоков (capabilitySection-block)ещё пятеро-->
</div>
</body>

</html>

рони 07.12.2015 23:45

Coriolan161,
ок справились сами :victory:


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