我正在为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,false); } },ready: function(player_id) { alert(player_id); } } jQuery(document).ready(function($){ vimeoPlayer.init.call(); });
你可以在temp.woodshop.tv/?work/?dickies-campaign/上看到它.
我收到此错误:
TypeError: Result of expression ‘$f(player).vimeoPlayer’ [undefined] is not an object.
解决方法
一个问题是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次大约十几次后,我开始明白它是如何工作的.
祝好运!