【问题标题】:How Can I Use jQuery .each Within A Function如何在函数中使用 jQuery .each
【发布时间】:2019-11-12 11:47:44
【问题描述】:

我有一个在页面上的所有<audio> 元素上运行的函数。它为每首歌曲创建一个新的媒体播放器。那工作正常。我正在使用 WordPress,所以我从页面模板中的数据库中提取歌曲标题和歌曲艺术家。我现在正在尝试使用 jQuery 获取该信息并将其插入到媒体播放器代码中的 <div> 中。我正在获取所有三首歌曲的第一首歌曲信息。这是带有结果的page

我尝试使用 .each 遍历包含歌曲标题的 .song-title 类并使用 .text 抓取标题,但是当我这样做时,它会抓取所有三首歌曲标题并为每首歌曲输出。

每首歌曲在模板文件中都是这样设置的:

<div class="song">
<div class="song-title d-none">Song Title</div>
<div class="song-artist d-none">Artist</div>
<audio preload="auto" src="song.mp3"></audio>
</div>

Javascript 文件有一个在每个 &lt;audio&gt; 标记上运行的函数,该函数中包含以下代码:

//$('.song').each(function (index, value) {
   $songTitle = $('.song-title').html();
   $songArtist = $('.song-artist').html();
//});

$player.append('<div class = "song-info d-flex flex-column"><div class = "serif font-italic">' + $songTitle + '</div><div class = "small">' + $songArtist + '</div>');

如果需要,这里是full code

我正在尝试让页面上的每个媒体播放器显示正确的歌曲标题和艺术家。

【问题讨论】:

  • $songTitle = $('.song-title', value).html(); 这会将搜索范围限制为当前的.song 元素。你也可以这样做:$songTitle = $(value).find('.song-title').html();
  • @phuzi 我确实尝试根据您的评论进行更新,但它破坏了功能,这意味着音频播放器没有启动给我一个空的黑匣子。

标签: jquery each


【解决方案1】:

这最终成为了可行的解决方案。为了限制范围,我不得不使用.siblings() 来遍历 DOM 并隔离每首歌曲的变量。

$songTitle = $this.siblings('.song-title').text();
$songArtist = $this.siblings('.song-title').text();

$player.append('<div class="song-info d-flex flex-column"><div class="serif font-italic">' + $songTitle + '</div><div class="small">' + $songArtist + '</div>');

【讨论】:

    【解决方案2】:

    获取歌曲名称和艺术家时,需要限制选择器的范围。

    $('.song').each(function (index, value) {
        $songTitle = $('.song-title', value).text();
        $songArtist = $('.song-artist', value).text();
    
        $player.append('<div class="song-info d-flex flex-column"><div class="serif font-italic">' + $songTitle + '</div><div class="small">' + $songArtist + '</div>');
    });
    

    【讨论】:

    • 我试过了,但现在我在歌曲信息div 中显示了所有三个歌曲块。
    • 所以本质上它是附加了 3 次
    • @MikeOberdick 你能加个minimal reproducible example吗,看来情况比你提出的问题要复杂。
    猜你喜欢
    • 2012-01-20
    • 2011-03-05
    • 1970-01-01
    • 2013-02-23
    • 2010-10-12
    • 2012-09-10
    • 2018-07-07
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多