0

我试图了解这些 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

4 回答 4

3

您对 class="video_controls" 是正确的,它正在寻找具有以下内容的所有元素。[rel] 只是确保它具有属性“rel”

<div class="video_controls" rel="whatever">

$('video[id=]') 只是在寻找一个视频,id=""

$('#'+parentControls.attr('rel')) 从上面的 rel 标记转换为 $('#whatever'),因此它在 .video_controls 元素上寻找具有 rel 属性 ID 的元素

于 2012-05-07T04:49:23.470 回答
2

它是基本的 CSS,[rel]指的是任何具有rel属性的元素。

.attr("rel")因此返回该rel属性的值。

于 2012-05-07T04:49:22.870 回答
2
  1. '.video_controls[rel]'表示“具有类video_controlsrel定义了属性”
  2. $('video[id=]')意思是“任何属性设置为空字符串的<video>标签。id
  3. $('#' + parentControls.attr('rel'))将返回 id 等于relparentControls 元素上的属性的元素。

有关 jQuery 选择器的更多信息,您可以查阅他们的文档

于 2012-05-07T04:51:59.487 回答
2
  1. $(el).parents('.video_controls[rel]');' returns all parents ofel that has a class.video_controls withrel` 并返回一个父数组。

  2. $('video[id=]');返回video没有的标签id

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

  4. $('#'+parentControls.attr('rel'));是一个选择器id,这里#表示 id 选择器

于 2012-05-07T05:00:18.373 回答