所以看看这个jsfiddle; Here
我正在尝试做什么;
一系列“链接”,每个链接都有一个最初隐藏的内容div。
点击链接应该A)显示该链接的div内容B)如果任何其他链接的div内容打开,请将其关闭。
即,一次只能打开一个div内容部分。
在click
处理程序的顶部,我将点击的链接的id捕获到var中。但是在each
通话期间,这似乎正在更新(如我在那里用于演示目的的警报呼叫所示)。
$('.link-part').click(function() {
var clickedId = this.id;
$('.link-part').each(function(i, obj) {
alert(clickedId + " " + obj.id);
if(clickedId = obj.id) {
$('#' + obj.id + 'div').slideToggle(500);
} else {
if('none' != $('#' + obj.id + 'div').css('display')) {
$('#' + obj.id + 'div').slideToggle(200);
}
}
});
return false;
});
这是为什么?如何将其变为非可变变量?
答案 0 :(得分:3)
在进行比较时,你刚刚错过了一个等号,更改:
if(clickedId = obj.id) {
到
if(clickedId == obj.id) {
答案 1 :(得分:1)
作为替代方案,您不需要each
循环来实现此效果,请尝试:
$('.link-part').click(function() {
$('.div-part:visible').slideUp()
$(this).next('.div-part').slideDown()
return false;
});