2011-04-04 105 views
0

我有一个jQuery切换的问题 - 你可以看到这里的问题:http://jsfiddle.net/tKUgg/3/jQuery的切换问题

正如你可以看到,出现在黄框中的每个项目,也出现在了黑盒子。当您单击黑色框中的“主要项目”时,黄色框中的相应项目会被切换。

我遇到的问题是,当其中一个子项被点击时,而不是只切换自己,它也切换其父。我需要它只能切换自己。 (例如,如果您在黑色框中单击“子项目a”,它应该只在黄色框中切换“子项目a”,但此时它将切换“子项目a”和父项“主项目” )

我对jQuery相当陌生,所以我确信它是一个愚蠢的错误。 我该如何解决这个问题? (注意:该代码旨在与内容管理系统一起工作,因此可以动态添加/删除新的地图图层(类别),并在菜单中使用切换显示相应的项目,这就是为什么它有点“意大利面条”作为你们有些人指出)

感谢

扎克

+1

你想要发生什么? – 2011-04-04 13:44:10

+0

单击其中一个子项目时,例如黑色框中的“子项目a”,它应该只在黄色框中切换相应的“子项目a”。目前,如果您点击“子项目a”,则会切换“子项目a”和上述“主项目”。 – 2011-04-04 13:47:13

+0

当你说“它应该切换”的东西,你的意思是它应该显示在黄色框中的项目? – 2011-04-04 13:49:50

回答

0

你可能要考虑修改你正在进行的意大利面代码。当我看着它时,我的大脑发生了爆炸。

由DNR提到 - stopPropagation()在处理嵌套列表时是必要的。

http://jsfiddle.net/V7CPr/

+0

该代码旨在与内容管理系统一起使用,以便动态地添加/移除新的地图图层(类别),并使用切换在菜单中显示相应的项目。这就是为什么它有一点“意大利面条”。 – 2011-04-04 14:01:37

1

各个子项是主项的子元素。所以,当你点击子项目时,你还要点击主项目 - 这也是为什么它也会触发。

为了防止这一点 - 你必须调用:

e.stopPropagation(); 
上则传递到您的jQuery单击处理click事件

了解here