1

我对 jquery 比较陌生,并且一直在尝试为 Wistia 视频播放器脚本创建一个函数,而不是一遍又一遍地堆叠相同的函数。某些页面将被应用到有多达 20 个视频,每个视频都需要特定的 url 才能播放。

原来的:

wistiaJQuery(document).ready(function () {
    var url = window.location.href.toString();

    // this will autoplay video with url 'www.my-site.com/a-name'
    if (url.indexOf('a-name') != -1) {
    wistiaJQuery('.a-name').click();
    $(".wistia-fancybox #fancybox-overlay").css("display", "block");
    }

    // this will autoplay video with url 'www.my-site.com/b-name'
    if (url.indexOf('b-name') != -1) {
    wistiaJQuery('.b-name').click();
    $(".wistia-fancybox #fancybox-overlay").css("display", "block");
    }

    // this will autoplay video with url 'www.my-site.com/c-name'
    if (url.indexOf('c-name') != -1) {
    wistiaJQuery('.c-name').click();
    $(".wistia-fancybox #fancybox-overlay").css("display", "block");
    }

});

变成这样的东西:

wistiaJQuery(document).ready(function () {
    function playVideo(selector) {
        $(selector).each(function () {
            var url = window.location.href.toString();
            var el = $(this);
            var vid = function () {
                if (url.indexOf(el) != -1) {
                    wistiaJQuery('.' + el).click();
                    $(".wistia-fancybox #fancybox-overlay").css("display", "block");
                }
            };
            $(el).on('load', vid);
        });
    }
    playVideo('a-name,b-name,c-name');
});
4

1 回答 1

0

您的代码很接近,只需要进行一些更改即可:

  • 您需要使用jQuery.each()而不是.each(). 如果这样做$('a-name,b-name,c-name'),您将一无所获,因为没有元素标签<a-name>、、<b-name><c-name>。将字符串拆分为一个数组,然后使用$.each( array, function(index, value) { ... })。然后替换您对elfor的引用value
  • 无需定义vid()函数并在加载元素时调用它。当您将代码放入其中时,该元素已经被加载$(document).ready()(而且您并没有在原始代码中等待它)。

最后,你可以使用这样的东西:

wistiaJQuery(document).ready(function () {

    function playVideo(selector) {
        $.each(selector.split(","), function (idx, obj) {
            var url = window.location.href.toString();
            if (url.indexOf(obj) != -1) {
                wistiaJQuery('.' + obj).click();
                $(".wistia-fancybox #fancybox-overlay").css("display", "block");
            }
        });
    }

    playVideo('a-name,b-name,c-name');

});
于 2015-07-28T17:24:01.397 回答