显示具有公共ID的元素,隐藏其他元素

时间:2014-02-22 13:25:49

标签: javascript jquery html

我正在尝试创建一个系统,当选择一个元素时,显示一个具有相同ID的元素,同时隐藏前一个元素而不隐藏该ID的所有实例(即只有在某个类存在时才隐藏它) 。 第一部分(使元素'活动'并设置ID变量)工作正常,但我似乎无法使用'.hidden'类停止设置辅助元素。

我正在使用的代码是

function showSelect() {
    select = $(".active").attr('id');
        $(".items").addClass("hidden");
        $("#"+select).removeClass("hidden");
}

我已尝试在第四行使用$(select).remove ...以及当前存在的内容,但无济于事。 其余代码可以在http://jsfiddle.net/ActualRealJamz/2JZA6/

上找到

我不确定我在这里做错了什么,并且JSHint报告没有任何语法错误 - 因此我的方法必定存在错误。 如果这种情况有用,Chrome会在$(".items").addClass("hidden");行上报告“意外的标识符”。

非常感谢任何有关此事的帮助。

1 个答案:

答案 0 :(得分:0)

正如Barmar在评论中指出的那样,从根本上说这是行不通的,因为你不能在多个元素上使用相同的id。如果这样做,则文档无效,浏览器可以忽略id值。 (实际上,它们通常表现为只有文档中具有给定id值的第一个元素具有id,忽略后续元素。)

您似乎在相关元素上使用了类items,因此您可以直接执行您要执行的操作。假设showSelect作为click处理程序附加到相关元素,在showSelect中,this将是被点击的特定元素。所以:

// Hooking it up
$(".items").click(showSelect);

// The function
function showSelect() {
    $(".items").not(this).addClass("hidden");
    $(this).removeClass("hidden");
}

根本不需要id