2016-07-24 40 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
相关问题