API jQuery и Vimeo Froogaloop

Я создаю плагин для WordPress и пока все хорошо с библиотекой PHP. Но у меня есть некоторые проблемы с JavaScript API.

Я пытаюсь использовать его с jQuery, и я думаю, что версия jQuery для WordPress мешает $f ярлык. Почему бы это не сработало?

var vimeoPlayer = {

    init: function() {
        var vimeoPlayers = document.querySelectorAll('iframe'),
        player;

        jQuery('iframe.vimeo-player').each(function(index, iframe){
            player = vimeoPlayers[index];
            $f(player).vimeoPlayer.addEvent('ready', vimeoPlayer.ready);
        });
    },

    addEvent: function(element, eventName, callback) {
        if (element.addEventListener) {
            element.addEventListener(eventName, callback, false);
        }
        else {
            element.attachEvent(eventName, callback, false);
        }
    },

    ready: function(player_id) {
        alert(player_id);
    }
}

jQuery(document).ready(function($){
    vimeoPlayer.init.call();
});

Вы можете увидеть это в действии на temp.woodshop.tv/?work/?dickies-campaign/?,

Я получаю эту ошибку:

Ошибка типа: результат выражения '$f(player).vimeoPlayer' [undefined] не является объектом.

2 ответа

Решение

Одна из проблем заключается в том, что addEvent - это как определенная вами функция, так и метод объекта $f(player). Похоже, вы путаете их. Метод addEvent объекта $f(player) принимает только два аргумента: имя события player и вызываемую функцию. Его следует использовать как $ f (your-iframe).addEvent ('событие vimeo', your_function);

Ваша функция addEvent объединит события между методами IE и W3C. Это не нужно, потому что вы используете JQuery. jQuery (что угодно).click() делает то же самое. Я не вижу ни одной части вашего фрагмента, где вам это нужно, но если вы это сделаете, я бы просто использовал метод jQuery.

Кроме того, объект проигрывателя видео должен иметь значение $f(player) вместо $f(player).vimeoPlayer

Попробуй это

jQuery('iframe.vimeo-player').each(function(){
    $f(this).addEvent('ready', ready);
});

Следует также отметить, что любые дополнительные события игрока должны быть добавлены из вашей функции обратного вызова. Например:

function ready(player_id){
    $f(player_id).addEvent('play', play);
    $f(player_id).api('play');
    alert("Ready!!!");
}
function play(){
    alert("Playing!!!");
}

Мне было трудно найти нужную информацию о API Vimeo Froogaloop, но после того, как я около десятка раз обыскивал игровую площадку Vimeo Froogaloop API, я начинаю понимать, как она работает.

Удачи!

Вместо $f(player).vimeoPlayer.addEvent пытаться $(this).addEvent,

Другие вопросы по тегам