我正在尝试创建一个系统,当选择一个元素时,显示一个具有相同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");
行上报告“意外的标识符”。
非常感谢任何有关此事的帮助。
答案 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
。