jQuery - .attr不是一个函数

时间:2016-08-10 05:20:06

标签: javascript jquery wordpress youtube attributes

构建一个WordPress插件,根据包含You Tube视频ID的短代码创建自定义风格的视频播放器,效果很好。但现在我必须转换它以允许同一页面上的多个视频。所以我按类名抓取所有玩家元素,然后获取他们的ID。 YouTube视频ID会附加到具有data-id属性的每位玩家。在插件的单视频版本中,我可以使用$(#playerid).att('data-id')来获取属性。 v2.0中发生了两件奇怪的事情......首先是我不能再使用$来指定jQuery对象,因为WordPress使用兼容模式(也许我应该想知道为什么我可以在之前使用$版本...),但这很容易解决。第二个,我被困住了,就是我不能使用attr。它说

  

attr不是一个功能。

我尝试过.attr('data-id'),。data('id'),并转换为vanilla .getAttribute,但没有任何效果。我已经检查过变量是否指向到了正确的对象,但是我无法得到它的属性......有什么帮助吗?

我会发布第一行,所有内容都会检出,直到你到达attr ...

var playerids = [];
var players = document.getElementsByClassName("video-player");

for (x = 0; x < players.length; x++) {
    playerids[x] = players[x].id;
}

//for each vidid, create a player
for (i = 0; i < players.length; i++) {

    var video_id = jQuery(playerids[i]).attr('data-id');
}

新信息: 将全局变量从Vanilla更改为jQuery,现在我可以在全局变量上使用.attr或.data。这是我的新工作代码......为什么这个工作,当局部变量没有?

//find all player divs
var players = jQuery(".video-player");

//get the player div ids
var playerids = [];
for (x = 0; x < players.length; x++) {
    playerids[x] = players[x].id;
}

//for each player div, get vidid and create player
for (i = 0; i < players.length; i++) {

    var this_video = jQuery(players[i]).data('id');

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码:

var video_id = jQuery('#' + playerids[i]).attr('data-id');

因为playerids [i]只有像#34; playerid&#34;

这样的游戏ID

答案 1 :(得分:0)

代码中明显错误的是在[{1}}

分配没有#符号的ID选择器

正确的语法应该是: jQuery(playerids[i]).attr('data-id');

如果使用jQuery('#' + playerids[i]).attr('data-id');选择器不是隐含的,请尝试改为:

id