我如何使用 class 而不是 id 用于 new YT.Player()
How can I use a class instead of id for new YT.Player()
在此处给出的示例中 https://developers.google.com/youtube/iframe_api_reference 您可以看到,不是使用标准 css 选择器语法,而是使用似乎仅引用 id 的自定义字符串语法。
<div id="player"></div>
// note no 'var' and yet this will work in strict mode
// since 'player' is being implicitly grabbed from the dom
player = new YT.Player('player', ...);
这当然会产生泄漏全局变量的问题,无论 id 的名称是什么,这是我试图避免的事情(因为它会为严格模式造成漏洞,并且只是令人困惑和意外的行为)。
解决方法是用连字符连接名称,这样就无法从全局 space
<div id="js-player"></div>
// now window['js-player'] is guarded from accidental access
var player = new YT.Player('js-player', ...);
但最重要的是,使用 ID 只是一种不好的做法,我宁愿完全避免使用它们,因为 类 工作得很好并且没有奇怪的副作用。
答案可能有点晚,但无论如何...
像这样传递选择器
var player = new YT.Player(
document.querySelector('.your-class'),
... API Stuff ...
);
当然,您可以使用 jQuery 或任何其他普通 JS 方法来选择元素。
var player = new YT.Player(
$('.your-class')[0],
... API Stuff ...
);
如果您使用 returns 节点列表的方法,请务必像这样遍历项目:Todd Motto - Looping Through NodeLists / Arrays
在此处给出的示例中 https://developers.google.com/youtube/iframe_api_reference 您可以看到,不是使用标准 css 选择器语法,而是使用似乎仅引用 id 的自定义字符串语法。
<div id="player"></div>
// note no 'var' and yet this will work in strict mode
// since 'player' is being implicitly grabbed from the dom
player = new YT.Player('player', ...);
这当然会产生泄漏全局变量的问题,无论 id 的名称是什么,这是我试图避免的事情(因为它会为严格模式造成漏洞,并且只是令人困惑和意外的行为)。
解决方法是用连字符连接名称,这样就无法从全局 space
<div id="js-player"></div>
// now window['js-player'] is guarded from accidental access
var player = new YT.Player('js-player', ...);
但最重要的是,使用 ID 只是一种不好的做法,我宁愿完全避免使用它们,因为 类 工作得很好并且没有奇怪的副作用。
答案可能有点晚,但无论如何...
像这样传递选择器
var player = new YT.Player(
document.querySelector('.your-class'),
... API Stuff ...
);
当然,您可以使用 jQuery 或任何其他普通 JS 方法来选择元素。
var player = new YT.Player(
$('.your-class')[0],
... API Stuff ...
);
如果您使用 returns 节点列表的方法,请务必像这样遍历项目:Todd Motto - Looping Through NodeLists / Arrays