为什么这个简单的jquery代码不起作用?

时间:2011-11-19 09:51:58

标签: jquery toggle

我正在尝试根据表格中不同th元素的点击来显示不同的数据。我正在使用jQuery 1.7

但我不知道为什么这不起作用?

我想要的是,当用户点击特定的th时,那个具有该th id的类的表应该显示,而其他表必须在那时隐藏..

这是我的小提琴,请帮助我。

http://jsfiddle.net/78UKh/3/

注意:请不要提出其他方法,因为我已经在该页面中编写了很多jquery代码。

由于

4 个答案:

答案 0 :(得分:5)

而不是使用:

$('#detailsDiv > table').hasClass(''+thisvalue +'').show();

使用过滤器:

$('#detailsDiv > table').filter('.'+thisvalue +'').show();

或在1个选择器中

$('#detailsDiv > table.' +thisvalue).show();

hasClass检查表是否有一个返回布尔值的类。 filter函数在当前结果之间进行过滤。

现场演示:http://jsfiddle.net/78UKh/4/

答案 1 :(得分:1)

以这种方式尝试:

$('#detailsTab th').live('click', function(){
            var thisvalue = $(this).attr('id');
            $('table.' + thisvalue).show();
});

JS Fiddle demo

因为我假设您只想显示相关的table

$('#detailsTab th').live('click', function(){
            var thisvalue = $(this).attr('id');
            $('table').not('#detailsTab, table.' + thisvalue).hide();
            $('table.' + thisvalue).show();
});

JS Fiddle demo

注意:在您的JS Fiddle id中,您的'设施'th是'设施',而相关的{{1}是'设施'。我已对此进行了修改,以便它们在我的演示中都是相同的情况。

答案 2 :(得分:1)

答案 3 :(得分:0)

您可以使用的另一个选择器(更适合其他属性)

$('#detailsDiv > table[class~="'+thisvalue+'"]').show();