2010-11-04 117 views
4

我承认有些复制和粘贴JavaScript开发人员(在其他语言中有强大的背景)。我使用jQuery手风琴,并使用cookie保存选定的手风琴部分。我发现了一些我整合到代码中的代码。关键部分如下。jQuery - newHeader属性/字段是做什么的?

change: function (event, ui) { 
    var index = $(this).find("h3").index(ui.newHeader[0]); 
    $.cookie(accordion, index); 
} 

这有效,但我讨厌使用我不明白的代码。我知道索引是通过使用find方法(假设我在内容中没有任何h3s)发现的,但我不明白的是ui.newHeader [0]正在做什么。什么是newHeader数组,它的目的是什么?

感谢, 埃里克

回答

3

查看jquery.ui.accordion.js的源代码,它只是一个包含新选定元素的对象。

你可以看到自己,如果你只是检查出的源:

// find elements to show and hide 
var toShow = clicked.next(), 
    toHide = this.active.next(), 
    data = { 
     options: options, 
     newHeader: clickedIsActive && options.collapsible ? $([]) : clicked, 
     oldHeader: this.active, 
     newContent: clickedIsActive && options.collapsible ? $([]) : toShow, 
     oldContent: toHide 
    }, 
     down = this.headers.index(this.active[0]) > this.headers.index(clicked[0]); 

    this.active = clickedIsActive ? $([]) : clicked; 
    this._toggle(toShow, toHide, data, clickedIsActive, down); 

    return; 
}, 

newHeader不是一个数组,它表示新选择的元素的对象。您发布的代码在手风琴元素中查找所有h3元素,然后采用newHeader的索引。每次手风琴改变时,newHeader表示的元素都会发生变化。

+0

谢谢。那么代码是否假定第一个元素不会改变? (点击输入太快) 查找(“h3”)返回元素的集合,索引返回第n个元素。那么为什么newHeader [0]是获取索引的好方法? – 2010-11-04 22:25:31

+0

@Erick T index()返回特定元素的well..index。 newHeader [0]或者只是newHeader就是你单击的元素表示的一个jQuery对象。 newHeader不是获取索引的方式,它只是索引的元素。你已经指定你想要一个h3元素,但newHeader是你感兴趣的特定元素。 – Radu 2010-11-04 23:25:05

1

它是由折叠菜单曝光。 newheader属性保存手风琴打开的激活元素的标题。

另请参阅doc了解更改事件。

相关问题