让javascript只对列表中的一个项目起作用

时间:2015-05-31 21:21:45

标签: javascript jquery ruby-on-rails coffeescript

我有以下代码(coffeescript),我有rails创建订阅视频列表,我希望弹出窗口只能在我悬停的那个上弹出。但是因为列表中的每个视频都有类订阅视频,无论我将其悬停在哪个视频上,它只会显示第一个视频的弹出窗口。有什么是javascript定义的最佳方法,我正在寻找当前所选的(我正在悬停的)订阅视频类中的弹出窗口ID?

$(document).ready ->
  $('.subscription-video').hover (->
    $('#popup').show()
  ), ->
    $('#popup').hide()

2 个答案:

答案 0 :(得分:2)

你可以使用DOM遍历来完成它。假设您的subscription-video标签和弹出窗口位于同一个div中:

$(document).ready ->
  $('.subscription-video').hover (->
    $(this).closest('.popup').show()
  ), ->
    $(this).closest('.popup').hide()

答案 1 :(得分:1)

由于你正在使用jQuery,你可以试试这个:

$(document).ready(function(){

    $(document)
    .on("mouseenter",".subscription-video", function(e){             
        $(e.target).hide(300);
    });
    $(document)
    .on("mouseleave",".subscription-video", function(e){            
         $(e.target).show(300);
    });

});

也称为事件委托