我试图了解这些jquery代码是如何工作的
function findVideoForElement(el) {
var parentControls=$(el).parents('.video_controls[rel]');
if (parentControls.length==0) {
return $('video[id=]');
} else {
return $('#'+parentControls.attr('rel'));
}
}
当调用parents()
时,它会返回与表达式'.video_controls[rel]'
匹配的元素。这个表达式到底意味着什么。它是class="video_controls"
?我无法弄清楚[rel]
部分的含义。
此外,$('video[id=]')
是否表示id =“video”的元素?
$('#'+parentControls.attr('rel'))
会返回什么?
答案 0 :(得分:3)
你对class =“video_controls”是正确的,它正在寻找具有类似以下内容的所有元素。 [rel]只是确保它具有属性“rel”
<div class="video_controls" rel="whatever">
$('video [id =]')只是在寻找一个视频,id =“”
$('#'+ parentControls.attr('rel'))从上面的rel标签转换为$('#whatever'),所以它正在寻找一个具有rel属性ID的元素。 video_controls元素
答案 1 :(得分:2)
这是基本的CSS,[rel]
是指具有rel
属性的任何元素。
.attr("rel")
会返回该rel
属性的值。
答案 2 :(得分:2)
'.video_controls[rel]'
表示“包含课程video_controls
且已定义rel
属性”$('video[id=]')
表示“任何<video>
标记,其中id
属性设置为空字符串。$('#' + parentControls.attr('rel'))
将返回id等于parentControls元素上rel
属性的元素。有关jQuery选择器的更多信息,您可以查阅他们的documentation。
答案 3 :(得分:2)
$(el).parents('.video_controls[rel]');' returns all parents of
el that has a class
。video_controls with
rel`并返回父母数组。
$('video[id=]');
返回video
代码,但没有id
。
parentControls.attr('rel')
返回父母在第一点选择提及的rel
属性。
$('#'+parentControls.attr('rel'));
是一个id
的选择器,此处#
表示ID选择器