【发布时间】:2011-09-28 05:43:26
【问题描述】:
我正在尝试为文档创建手风琴效果,当您单击<h1> 时,文档的其余部分(<div.container>)带有向上和向下滑动的切换开关。但是,我一直遇到问题。代码如下:
HTML
<article>
<h1>Title</h1>
<div class="container">
//...
</div>
</article>
<article>
//...
</article>
<article>
//...
</article>
CoffeeScript:
articles = $('article').toArray()
for article in articles
#console.log $('.container', article).parent().attr('id')
$('h1', article).click ->
$('.container', article).slideToggle 'slow'
当我使用article 变量说... console.log 它在文章中旋转并打印回它们的ID。但是当我点击任何<h1> 元素时,它总是会折叠最后一个<article>s <div.container>。
我认为这是因为 article 变量存储在 CoffeeScript 中 for 循环的范围之外,并且直到循环完成后才会执行单击。
如果是这样,我如何保证在单击事件执行时引用了正确的对象?使用for i in [0...3] 循环并直接引用数组会更好吗?问题完全是另一回事吗?感谢您的帮助!
对于可能不熟悉coffeeScript的人,这里是编译的javaScript(忽略_results变量):
var articles
articles = $('article').toArray();
_results = [];
for (_i = 0, _len = articles.length; _i < _len; _i++) {
article = articles[_i];
_results.push($('h1', article).click(function() {
return $('.container', article).slideToggle('slow');
}));
}
【问题讨论】:
标签: javascript jquery coffeescript