javascript - 嵌入YouTube/Soundcloud的jQuery Accordion

标签 javascript jquery youtube accordion soundcloud

目前,我正在为即将发行的音乐(音乐)制作页面。每个版本都有其自己的YouTube或Soundcloud嵌入式预览。我想将这些嵌入物自动启动/停止在 Accordion 面板中。

这个想法:

单击 Accordion 标题后, Accordion 的内容将向下滑动,并加载YouTube或Soundcloud嵌入式播放器。嵌入式播放器在加载后也会自动播放。如果您打开另一个 Accordion (音轨),嵌入式播放器将自动停止。

我真的不知道如何用jQuery做到这一点。希望你们能帮助我!

屏幕截图:

预览URL: http://dev.wbrnd.nl/hardnews/muziek/

HTML:

<dl class="accordion">
    <dt><span>Artist - Title - Label - Cat. ID</span><i class="accordion_icon fa fa-play"></i></dt>
    <dd class="accordion_content">
        YouTube player 1
    </dd>
    <dt><span>Artist - Title - Label - Cat. ID</span><i class="accordion_icon fa fa-play"></i></dt>
    <dd class="accordion_content">
        Soundcloud player 1
    </dd>
    <dt><span>Artist - Title - Label - Cat. ID</span><i class="accordion_icon fa fa-play"></i></dt>
    <dd class="accordion_content">
        YouTube Player 2
    </dd>
    <dt><span>Artist - Title - Label - Cat. ID</span><i class="accordion_icon fa fa-play"></i></dt>
    <dd class="accordion_content">
        Soundcloud player 2
    </dd>
</dl>

Javascript:
jQuery(".accordion dt").click(function() {
jQuery(this).toggleClass("active").find("i").toggleClass("fa-play fa-stop")
            .closest("dt").siblings("dt")
            .removeClass("active").find("i").removeClass("fa-stop").addClass("fa-play");

            jQuery(this).next(".accordion_content").stop().slideToggle().siblings(".accordion_content").slideUp();

            jQuery(this).next(".youtube").hide();
});

jQuery(".accordion_content").hide();

最佳答案

您可以在调用activate事件之后动态加载每个选项卡的内容。您可以使用以下方法获取 Activity 项目的索引:

accordion("option", "active");

然后,您可以在启用了自动播放属性的情况下,将实际面板的html属性设置为youtube或soundcloud代码。
$('.accordion').accordion({ 
activate: function(event, ui){
    var aindex= $( ".accordion" ).accordion( "option", "active" );
    $(".accordion dd").eq(aindex).html("Youtube/Soundcloud Code with autoplay here...");
}
});

我在我的页面上用 Accordion 测试了以上内容,并进行了一些更改以适合您的 Accordion ,但是您可能需要对其进行一些调整才能为您工作。

您还需要先将非 Activity 标签的默认值设置为删除其他视频。在激活功能开始时执行此操作。

例如:
$('.accordion').accordion({ 
activate: function(event, ui){
    $(".accordion dd").each(function() {
      $( this ).text("Loading...");
    });
    var aindex= $( ".accordion" ).accordion( "option", "active" );
    $(".accordion dd").eq(aindex).html("Youtube/Soundcloud Code with autoplay here...");
}
});

您甚至可以将每个youtube或soundcloud的代码存储在数组中,并使用aindex变量提取正确的值。

关于javascript - 嵌入YouTube/Soundcloud的jQuery Accordion ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627831/

相关文章:

javascript - 2 个视频同一页面使用 iframe Youtube API 只加载一个

jquery - 带有 jQ​​uery 水平滚动条的 CSS3 多列布局不能在列之间使用滚轮

javascript - jQuery .attr() 返回第一个(错误的)值?

javascript - 使用 jQuery、AJAX 和 PHP 单击复选框时更新 MySQL 字段

javascript - react 多个高阶组件

javascript - 隐藏dom子树时查找元素的高度

iframe - Youtube Iframe 禁用暂停视频

youtube - 使用JavaScript跟踪Youtube Iframe Player中的社交分享

javascript - 带标签的 D3 仪表图

javascript - 创建包装组件并将其传递给 React Router 的推荐方法是什么?