首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.next() .prev()遍历多个<article>元素

.next() .prev()遍历多个<article>元素
EN

Stack Overflow用户
提问于 2013-07-16 00:40:57
回答 2查看 443关注 0票数 1

我正在编写一个简单的HTML5音频播放列表(audio.js),它将在Wordpress <article ul li>帖子中更改为下一首歌曲。因此,我在遍历多个<article>标记和在.next().prev()上检索每个标签的<ul li>时遇到了一些困难。我开始认为使用这些选择器不是最好的解决方案。

代码语言:javascript
复制
<script>
  $(function() { 
    // Setup the player to autoplay the next track
    var a = audiojs.createAll({
      trackEnded: function() {
        var next = $('article ul li').next();
        var title = $('img', this).attr("title");
            $("a.songtitle").text(title);
        if (!next.length) next = $('article ul li').first();
        audio.load($('a', next).attr('data-src'));
        audio.play();
      }
    });

    // Load in the first track
    var audio = a[0];
        first = $('article ul a').attr('data-src');
    $('article ul li').first();
    audio.load(first);

    // Load in a track on click
    $('article ul li').click(function(e) {
      e.preventDefault();
      var title = $('img', this).attr("title");
        $("a.songtitle").text(title);
      audio.load($('a', this).attr('data-src'));
      audio.play();
    });
    // Keyboard shortcuts
    $(document).keydown(function(e) {
      var unicode = e.charCode ? e.charCode : e.keyCode;
         // right arrow
      if (unicode == 39) {
        var next = $('article ul li').next();
        if (!next.length) next = $('ul li').first();
        next.click();
        // back arrow
      } else if (unicode == 37) {
        var title = $('img', this).attr("title");
            $("a.songtitle").text(title);
        var prev = $('article ul li').prev();
        if (!prev.length) prev = $('article ul li').last();
        prev.click();
        // spacebar
      } else if (unicode == 32) {
        audio.playPause();
      }
    })
  });
</script>

如何修改这段代码以在多个<article ul li>标记之间切换以跳到下一首/prev歌曲?任何帮助都将不胜感激!谢谢!

编辑:,这是我想做的。但正如您所看到的,它并不是跳过每个<article ul li>标记的歌曲。Audio.js自动查找所有<a>标记并获取data-src属性来加载歌曲。http://jsfiddle.net/UkrZx/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-18 20:29:49

不知道为什么它不会识别next/prev <article>元素,但是我将原来的Wordpress post内容改为只输出<li>元素之间的帖子。奇怪,但至少现在起作用了。

我的代码现在是这样的:http://jsfiddle.net/HxVaj/2/

票数 0
EN

Stack Overflow用户

发布于 2013-07-16 01:59:06

JSFIDDLE

代码语言:javascript
复制
 $(function() { 
        // Setup the player to autoplay the next track
        var a = audiojs.createAll({
          trackEnded: function() {
            var next = $('article > ul li.playing').next();
            var title = $('img', this).attr("title");
                $("a.songtitle").text(title);
            if (!next.length) next = $('article > ul li').first();
            audio.load($('a', next).attr('data-src'));
            audio.play();
          }
        });

        // Load in the first track
        var audio = a[0];
            first = $('article > ul li a').attr('data-src');
        $('article > ul li').first();
        audio.load(first);

        // Load in a track on click
        $('article > ul li').click(function(e) {
          e.preventDefault();
          var title = $('img', this).attr("title");
            $("a.songtitle").text(title);
          audio.load($('a', this).attr('data-src'));
          audio.play();
        });
        // Keyboard shortcuts
        $(document).keydown(function(e) {
          var unicode = e.charCode ? e.charCode : e.keyCode;
             // right arrow
          if (unicode == 39) {
            var next = $('article > ul li.playing').next();
            if (!next.length) next = $('article > ul li').first();
            next.click();
            // back arrow
          } else if (unicode == 37) {
            var title = $('img', this).attr("title");
                $("a.songtitle").text(title);
            var prev = $('article > ul li.playing').prev();
            if (!prev.length) prev = $('article > ul li').last();
            prev.click();
            // spacebar
          } else if (unicode == 32) {
            audio.playPause();
          }
        })
      });

看起来你想要修改这个剧本,我希望我能更多地了解Wordpress或者AUDIO.JS脚本来帮助你。它似乎不想识别父<li>之外的任何东西,但是我可以让它在代码中播放第二首歌。祝你好运我希望这能帮上忙。

编辑小成就..。有了几个编辑(和一个更新的小提琴),我可以让它播放两首歌,但只能用左箭头。奇怪,我知道..。但这是进步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17666223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档