Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-.attr不是函数_Javascript_Jquery_Wordpress_Youtube_Attributes - Fatal编程技术网

Javascript jQuery-.attr不是函数

Javascript jQuery-.attr不是函数,javascript,jquery,wordpress,youtube,attributes,Javascript,Jquery,Wordpress,Youtube,Attributes,构建了一个WordPress插件,该插件基于包含YouTube视频id的短代码创建了一个自定义样式的视频播放器,并且运行良好。但现在我必须将其转换为允许同一页面上有多个视频。所以我按类名抓取所有播放器元素,然后获取它们的ID。YouTube视频id附加到每个播放器上,并带有数据id属性。在插件的单个视频版本中,我可以使用$(#playerid).att('data-id')获取属性。v2.0中发生了两件奇怪的事情。。。首先,我不能再使用$来指定jQuery对象,因为WordPress使用兼容模式

构建了一个WordPress插件,该插件基于包含YouTube视频id的短代码创建了一个自定义样式的视频播放器,并且运行良好。但现在我必须将其转换为允许同一页面上有多个视频。所以我按类名抓取所有播放器元素,然后获取它们的ID。YouTube视频id附加到每个播放器上,并带有
数据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');
}
var playerids=[];
var players=document.getElementsByClassName(“视频播放器”);
对于(x=0;x
新信息: 将全局变量从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');
//查找所有玩家div
var players=jQuery(“.video player”);
//获取玩家分区ID
var playerids=[];
对于(x=0;x
您可以尝试使用以下代码:

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

因为playerids[i]只有playerid这样的playerid,所以您可以尝试使用以下代码:

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

因为playerids[i]只有类似于“playerid”的playerid,所以代码中明显错误的是在
jQuery(playerids[i]).attr('data-id');

正确的语法应为:
jQuery(“#”+playerids[i]).attr('data-id');

如果使用
id
选择器不是隐式的,请尝试以下操作:

jQuery( ".video-player" ).each(function( index ) {
  console.log( index + ": " + jQuery(this).attr('data-id') );
});

代码中明显的错误是在
jQuery(playerids[i]).attr('data-id');

正确的语法应为:
jQuery(“#”+playerids[i]).attr('data-id');

如果使用
id
选择器不是隐式的,请尝试以下操作:

jQuery( ".video-player" ).each(function( index ) {
  console.log( index + ": " + jQuery(this).attr('data-id') );
});

您包括jquery库了吗?您包括jquery库了吗?哎哟-回想起来,不添加“#”是很明显的,但即使添加了“#”,它仍然告诉我.attr(或.data)不是一个函数。使用console.log,我可以在控制台中看到正确的值,但我不熟悉该方法--我如何在函数中检索这些值?(该方法是良好的实践吗?)哎哟-回想起来,不添加“#”是很明显的…但即使添加了它,它仍然告诉我.attr(或.data)不是一个函数。使用console.log,我可以看到控制台中回显的正确值,但我不熟悉该方法--如何在函数中检索这些值?(该方法是一种良好的做法吗?)