Jquery .next().prev()遍历多个<;文章>;元素

Jquery .next().prev()遍历多个<;文章>;元素,jquery,html,audio,html5-audio,tree-traversal,Jquery,Html,Audio,Html5 Audio,Tree Traversal,我正在制作一个简单的HTML5音频播放列表(audio.js),可以在Wordpress中切换到下一首歌曲 看起来您正在尝试修改,我希望我了解更多关于Wordpress或AUDIO.JS脚本的信息,以帮助您。它似乎不想识别父级以外的任何内容,但我可以让它播放代码中的第二首歌曲。祝你好运,我希望这有帮助 编辑次要成就。。。通过一些编辑(和更新的提琴),我可以让它播放两首歌,但只能使用左箭头。奇怪,我知道。。但是这是一个进步。不知道为什么它不能识别next/prev为什么不创建一个数组,然后遍历它而

我正在制作一个简单的HTML5音频播放列表(audio.js),可以在Wordpress中切换到下一首歌曲

看起来您正在尝试修改,我希望我了解更多关于Wordpress或AUDIO.JS脚本的信息,以帮助您。它似乎不想识别父级以外的任何内容,但我可以让它播放代码中的第二首歌曲。祝你好运,我希望这有帮助


编辑次要成就。。。通过一些编辑(和更新的提琴),我可以让它播放两首歌,但只能使用左箭头。奇怪,我知道。。但是这是一个进步。

不知道为什么它不能识别next/prev

为什么不创建一个数组,然后遍历它而不是实际的DOM?请进一步解释,我完全不在这里。谢谢你的耐心。首先,不是每个人都熟悉Wordpress文章的样子,更不用说你的歌曲列表是如何放在里面的了。那么,用一些有效的HTML创建一个JSFIDLE怎么样?好的,谢谢你的建议!也更新了我原来的帖子。这就是我想做的,但正如你所看到的,它们不会在两者之间切换,所以你是说它只在单个
标记中搜索?没关系,谢谢你的尝试。这正是我要修改的脚本。你认为这与
.next()
.prev()的使用有关吗选择器?我了解到这些选择器只遍历集合中的下一个元素。添加
应扩展集合,以包括
文章
标记作为最外层元素以及任何包含
ul li的元素,不用了。我会通读AUDIO.JS文档,看看能不能想出点什么。谢谢你在这个DevlishOne上的持续帮助。见我贴出的答案。也许你能帮我做我的工作?
<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>
 $(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();
          }
        })
      });