this.id在随后的“每个”循环中捕获到var变化?

时间:2012-07-12 08:57:00

标签: javascript jquery css

所以看看这个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;
});​

这是为什么?如何将其变为非可变变量?

2 个答案:

答案 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;
});

DEMO