我正在为WordPress构建一个插件,到目前为止,PHP库已经很好了。但我在使用JavaScript API时遇到了一些问题。
我正在尝试将它与jQuery一起使用,我认为WordPress版本的jQuery正在弄乱$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/?
处看到它。
我收到此错误:
TypeError:表达式'$ f(播放器).vimeoPlayer'[undefined]的结果不是对象。
答案 0 :(得分:17)
一个问题是addEvent既是你定义的函数,也是$ f(player)对象的方法。你似乎对这两者感到困惑。 $ f(player)对象的addEvent方法只接受两个参数,即player事件的名称和要调用的函数。它应该用作$ f(你的iframe).addEvent('vimeo event',your_function);
您的addEvent函数将统一IE和W3C方法之间的事件。因为你正在使用jQuery,所以不需要它。 jQuery(无论如何).click()做同样的事情。我没有看到你需要它的代码段的任何部分,但如果你这样做,我只会使用jQuery方法。
此外,视频播放器对象应该是$ f(播放器)而不是$ f(播放器).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!!!");
}
我很难在Vimeo的Froogaloop api上找到我想要的信息,但在搜索了Vimeo Froogaloop API Playground十几次后,我开始了解它是如何工作的。
祝你好运!答案 1 :(得分:0)
而不是$f(player).vimeoPlayer.addEvent
尝试$(this).addEvent
。