2011-07-21 129 views
0

我想切换.toggle-item-(number here).link(number here)。在开始时,所有.toggle-item都关闭。只能同时显示一个切换项目。每当新的切换项目打开时,另一个打开的切换项目应该关闭。jQuery切换不起作用

用代码链接是在这里:http://jsfiddle.net/rAUqb/

为什么jQuery代码不工作?

回答

0

更新Marc的代码,以便它关闭时,点击其他人。

$(document).ready(function() { 
    $('[class^=toggle-item]').hide(); 
    $('[class^=link]').click(function() { 
     var $this = $(this); 
     var x = $this.attr("class"); 
     var className = '.toggle-item-' + x.replace('link', ''); 
     $(className).toggle(); 
     $('[class^=toggle-item]:not('+className +')').hide(); 
     return false; 
    }); 
}); 
+0

不需要像这样复杂,请参阅我的更新代码。 – Marc

+0

它并不是非常复杂。您更新后的代码在多次点击时不会切换同一项目,也不会隐藏加载项目 – Contra

+0

谢谢 - Marc和Contra - 您都对解决方案有所贡献 – rabea

1

我已更新您的代码。

你没有正确地得到数字。

$(document).ready(function() { 
    $('[class^=toggle-item]').hide(); 
    $('[class^=link]').click(function() { 
     var x = $(this).attr("class").replace('link', ''); 
     $('[class^=toggle-item]:not(.toggle-item-'+x+')').hide(); 
     $('.toggle-item-' + x).toggle(); 
     return false; 
    }); 
}); 

x中的值是完整的类名(“link1”,“link2”等)。我只是简单地删除了“链接”部分以获得该号码。

+0

谢谢哟,但是这段代码没有关闭已经打开的切换项目 - 对此有什么想法? – rabea

+0

是的,只有一行额外的代码。更新。 – Marc

+0

这段代码已经破解,我的评论 – Contra

0

Jquery accordion不适合你吗?

+0

不,因为一开始没有应该打开的曲目条目 – rabea

+0

请查看'可折叠'选项。这将允许所有部分一次关闭。如果它能为你工作,它比试图重新发明轮子要好得多。 – Jay

0

使用attr("class")代替attr("classname")