1

私はjqueryに比較的慣れていないので、同じものを何度も積み重ねるのではなく、Wistiaビデオプレーヤースクリプト用の単一の関数を作成しようとしています。一部のページには、それぞれを再生するために特定の URL が必要な最大 20 個のビデオが含まれています。

オリジナル:

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')ため、何も得られません。文字列を配列に分割し、代わりに使用します。次に、参照をfor に置き換えます。<a-name><b-name><c-name>$.each( array, function(index, value) { ... })elvalue
  • 関数を定義して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 に答える