0

所以看看这个jsfiddle;这里

我正在尝试做的事情;

一系列“链接”,每个链接下方都有一个最初隐藏的内容 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;
});​

为什么是这样?我如何让它成为一个非可变变量?

4

2 回答 2

3

在进行比较时,您刚刚错过了一个等号,请更改:

if(clickedId = obj.id) {

if(clickedId == obj.id) {
于 2012-07-12T08:59:44.807 回答
1

作为替代方案,您不需要each循环来获得这种效果,试试这个:

$('.link-part').click(function() {
    $('.div-part:visible').slideUp()
    $(this).next('.div-part').slideDown()
    return false;
});

演示

于 2012-07-12T09:02:07.987 回答