意義

2012-05-07 23 views
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]'。什麼究竟這種表達mean.Is它class="video_controls"?我無法弄清楚[rel]部件的含義。

此外,沒有$('video[id=]')意味着使用id = 「視頻」 元素?

什麼會$('#'+parentControls.attr('rel'))回來?

+0

「相對」 是一個HTML屬性附加傷害 – chepe263

回答

2
  1. '.video_controls[rel]'表示「具有類別video_controls並具有rel屬性定義」
  2. $('video[id=]')手段「任何<video>標籤與id屬性設置爲空字符串。
  3. $('#' + parentControls.attr('rel'))將與一個id等於parentControls元件上的rel屬性返回元素。

有關jQuery選擇器的更多信息,可以查閱他們的documentation

+0

'$('video [id =]')意味着「任何

+0

這只是選擇器的工作方式,你選擇所有的視頻元素=「」,不管引號是否存在,你正在尋找一個空字符串 – Bryan

+0

其實,我錯了,它匹配任何'視頻'id'設置爲一個空字符串,但不會匹配'video'標籤,根本沒有'id'屬性。jsFiddle:http://jsfiddle.net/jonypawks/YtH4c/ – Jesse

2

這是基本的CSS,[rel]指的是與rel屬性的元素。因此

.attr("rel")返回rel屬性的值。

3

你說得對類=「video_controls」,它在尋找有像下面的所有元素。在[相對]只是確保它有一個屬性 「相對」

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

的$( '視頻[ID =]')只是尋找一個視頻,使用id = 「」

的$ (「#」 + parentControls.attr(「相對」))轉換爲$(「#不管」)中從相對的標籤,所以它尋找一個元素與.video_controls元素的rel屬性的ID

+0

所以,如果有與IDS'兩個視頻元素的whatever''和''另一個',將'$('video [id =]')'匹配''another''? – damon

+1

否定的,因爲$('video [id =]')正在尋找具有的元素,不要問我爲什麼會出現這種情況,但這就是它的要求。我的猜測是,這是默認播放器,如果出現某種錯誤 – Bryan

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選擇