jquery代码的含义

时间:2012-05-07 04:46:40

标签: jquery expression

我试图了解这些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'))会返回什么?

4 个答案:

答案 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)

  1. '.video_controls[rel]'表示“包含课程video_controls且已定义rel属性”
  2. $('video[id=]')表示“任何<video>标记,其中id属性设置为空字符串。
  3. $('#' + parentControls.attr('rel'))将返回id等于parentControls元素上rel属性的元素。
  4. 有关jQuery选择器的更多信息,您可以查阅他们的documentation

答案 3 :(得分:2)

  1. $(el).parents('.video_controls[rel]');' returns all parents of el that has a class。video_controls with rel`并返回父母数组。

  2. $('video[id=]');返回video代码,但没有id

  3. parentControls.attr('rel')返回父母在第一点选择提及的rel属性。

  4. $('#'+parentControls.attr('rel'));是一个id的选择器,此处#表示ID选择器