2016-07-24 58 views
1

我想知道,如果有人可以解釋以下行對我說:創建與其他兩個元素(代碼解釋要求)一個jQuery元素

var panel = parseInt($el.parent().attr('data-panel')); 
var $curr_panel = $('.h5p-panel:eq(' + panel + ')', that.$myDom); 
var $next_panel = $('.h5p-panel:eq(' + (panel + 1) + ')', that.$myDom); 

如果有人能走路我通過它用簡單的英語我會很感激它。

我知道$ curr_panel和$ next_panel是由h5p面板中的一個元素和一個dom元素的組合創建的,但此後我很困惑。

的代碼可以在這裏找到:

https://github.com/h5p/h5p-summary/blob/master/js/summary.js#L222

和現場演示在這裏:

https://h5p.org/summary

+0

什麼不明白嗎?因爲eq()使用索引來選擇DOM元素,所以可變面板是數據面板屬性(即jQuery數據)中的面板索引,代碼從選擇的面板和下一個面板獲取。實際上,有一個小錯誤,這應該是$ el.parent()。data('panel')而不是$ el.parent()。attr('data-panel'),但結果是一樣的。 – Loenix

+0

我對第二行上下文的設置感到困惑,但@Abdennour TOUMI將其清除。感謝您發現錯誤,請問爲什麼它被認爲是錯誤? – timothyylim

+0

如果我明白了,$(「selector」,parent)與$(parent).find(「selector」)相同 – Loenix

回答

4

您需要了解前:

  1. that = >反覆Summary類的實例。

    119 Summary.prototype.createQuestion = function() { 
    120  var that = this; 
    
  2. that.$myDom => jQuery的元件<div class="summary-content"/>

    124 this.$myDom = $('<div>', { 
    125  'class': 'summary-content' 
    126 }); 
    
  3. $(A,B) =>表示選擇A其中B是其父母(上下文)中的一個。 [相同B.find(A)]

  4. $('.CLASS:eq(i)',B) =>表示選擇第(i + 1)元件具有CSS類其父母的CLASS &一個是B

結論:

$curr_panel = $('.h5p-panel:eq(' + panel + ')', that.$myDom); 

手段,選擇DOM元素,其中:

  • 具有CSS類= h5p-panel
  • 的第三元件,如果我們假設panel=2。 (因爲eq(0) =>第1個要素)
  • 其父母之一是that.$myDom