Nat*_*han 1 javascript jquery closures
如果这只是另一个被一遍又一遍地问的问题,我很抱歉.我发现了一些类似的问题,这些例子并没有让我到达我需要的地方.这类似于jQuery Closures,Loops和Events.
$('a.highslide').each(function() {
hsGroup = $(this).attr("rel");
if(hsGroup.length > 1){
hsGroup = hsGroup.replace(/\s/g , "-");
}
this.onclick = function() {
return hs.expand(this, { slideshowGroup: hsGroup });
}
});
Run Code Online (Sandbox Code Playgroud)
这段代码设置了一个启动高滑块弹出窗口的onclick.我已经添加了slideshowGroup属性和它上面的hsGroup代码,它们提取了Rel属性的内容来定义每个属性的组.您可能会立即看到的问题是hsGroup的内容不是该anon函数的本地内容.因此,在运行时,对于应用的每个链接,其值始终相同.我查看了一些封闭示例,但迄今为止未能使它们在我的情况下工作.
谢谢,
您只需要为var每个链接创建一个,如下所示:
$('a.highslide').each(function() {
var hsGroup = $(this).attr("rel");
//^ -- add this
if(hsGroup.length > 1){
hsGroup = hsGroup.replace(/\s/g , "-");
}
this.onclick = function() {
return hs.expand(this, { slideshowGroup: hsGroup });
}
});
Run Code Online (Sandbox Code Playgroud)
如果没有了var你有一个全局hsGroup那是越来越对每个循环重复使用变量,并在每次点击所使用的相同,最后一个值结束了.
或者,只是在click活动时进行替换,如下所示:
$('a.highslide').click(function() {
var hsGroup = $(this).attr("rel");
if (hsGroup.length > 1) hsGroup = hsGroup.replace(/\s/g , "-");
return hs.expand(this, { slideshowGroup: hsGroup });
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |