使用 for 循环来标识 HTML .classes (jQuery)


using a for loop to identify html .classes (jQuery)

我正在使用simplepie来拉入两个rss提要。然后,使用 PHP foreach 循环,我将每个提要帖子包含在类.story_overview中包含的信息echo,并为每篇文章添加一个.pin类。我在 PHP foreach中使用 jQuery 来hide.story_overview并在.story_overview和相应的.pin类的末尾添加一个唯一的标识号,这正在工作:

<script>
    $('.story_overview').hide();
    $('.pin').attr('class','pin' + i);
    $('.story_overview').attr('class','story_overview' + i);   
    i++;
</script>

我试图达到将鼠标悬停在显示相应.story_overview .pin上(因此.pin1会显示.story_overview1)的预期结果。我目前正在尝试使用 JavaScript for 循环执行此操作,但它拒绝工作:

<script>
    for (x = 0; x <= i; x++){
        $('.pin'+ x.toString()).mouseover(function(){
            $('.story_overview' + x.toString()).show();
        });
        $('.pin'+ x.toString()).mouseout(function(){
            $('.story_overview' + x.toString()).hide();
        }); 
    };
</script>

我已经通过尝试相同的代码来测试所有 jQuery 命令,但在类名的末尾使用标识号(而不是x.toString),并将代码放在 for 循环之外,并且所有这些都有效。

任何帮助将不胜感激!提前谢谢。

您可以简单地执行此操作:

  $('.pin').mouseover(function(){
            $('.story_overview').eq($(this).index()).show();
   }).mouseout(function(){
            $('.story_overview').eq($(this).index()).hide();
   }); 

可以通过将 .eq() 方法与 .index() 一起使用来获取悬停元素的索引,从而实现所需的输出。

或者你可能喜欢这个:

  $('.pin').mouseover(function(){
            $('.story_overview'+$(this).index()).show();
   }).mouseout(function(){
            $('.story_overview'+$(this).index()).hide();
   });