2015-12-06 4 views
0

У меня есть петля продуктов на мой взгляд, которая отлично работает.jQuery Каждая петля - отображает отдельный элемент

Затем я закодировал всплывающее окно мыши (JS). Всплывающее окно отображает цикл всех продуктов, а не отдельный продукт, который пользователь просматривает.

В любом случае, научите меня, как это решить?

Haml:

#product_view 
- @products.each do |product| 
    .product_each 
     .product_image 
      = link_to (image_tag product.image.url(:tiny)), product, class: "each", popup: true 
     .pop-up 
      %poptitle= product.title 

JS:

$(function() { 
    var moveLeft = -100; 
    var moveDown = -150; 

    $('a#link').hover(function(e) { 
     $('.pop-up').show() 
      .css('top', e.pageY + moveDown) 
      .css('left', e.pageX + moveLeft) 
      .appendTo('body'); 
    }, function() { 
     $('.pop-up').hide(); 
    }); 

    $('a#link').mousemove(function(e) { 
     $(".pop-up").css('top', e.pageY + moveDown).css('left', e.pageX + moveLeft); 
    }); 

}); 

EDIT:

class вместо id (названный "каждый")

$(function() { 
    var moveLeft = -100; 
    var moveDown = -150; 

    $('a.each').hover(function(e) { 
    $('.pop-up').show() 
     .css('top', e.pageY + moveDown) 
     .css('left', e.pageX + moveLeft) 
     .appendTo('body'); 
    }, function() { 
    $('.pop-up').hide(); 
    }); 

    $('a.each').mousemove(function(e) { 
    $(".pop-up").css('top', e.pageY + moveDown).css('left', e.pageX + moveLeft); 
    }); 

}); 

ответ

1

Где вы используете $('.pop-up'), вы получаете список всех элементов с классом pop-up на странице. Вы должны использовать $(this).parent().find('.pop-up'), чтобы найти дочерних элементов .pop-up элементов родительского элемента.

+0

Почти работает! Работает отлично (информация обновляется в соответствии с каждым элементом). Одна вещь, однако, наведение мыши теперь работает только с * первым * временем, когда пользователь наводит на мыши элемент. Какой-нибудь вопрос, почему это происходит? – Liroy

+0

О, да, ваш 'appendTo ('body')', перемещает всплывающее окно в DOM. Это проблема во второй раз, потому что тогда она больше не является братом элемента 'a'. Работает ли это без 'appendTo ('body')'? –

+0

Гений! Большое спасибо за вашу помощь, мой друг! – Liroy

Смежные вопросы