2014-03-18 67 views
0

我有一张表与不同的列标识与不同的类。jquery滞后点击功能

我也有一个复选框绑定到每一列。

我创建了一个函数,在点击任何复选框时调用。在这个函数中,我隐藏/显示与此链接的列。

它没有任何JavaScript错误,代码如下:

$(document).ready(function(){ 
     $('ul input').click(function(){ 
      //alert('yooo'); 
      if ($(this).is(':checked')) { 
       //alert('checked'); 
       $("td."+replaceAll(" ","_",$(this).val())).show(); 
       $("th."+replaceAll(" ","_",$(this).val())).show(); 
       //alert($("td").length); 
      } 
      else{ 
       //alert('unselected'); 
       $("td."+replaceAll(" ","_",$(this).val())).hide(); 
       $("th."+replaceAll(" ","_",$(this).val())).hide(); 
      } 
     }); 
    }); 

然而,每一次点击后,该操作有一个滞后(许多点击之后就变成tooooooo缓慢,许多秒) 。

我也试着用.css代替隐藏显示,但它没有做任何改变。

+3

你能发布你的html吗? – Unknown

+0

'<? \t \t \t $ d = 0; \t \t \t的foreach($ matriceCampi为$ chiave => $ valore){ \t \t \t \t?> \t \t \t \t \t ”> \t \t \t \t \t \t <?= $能美[$ d ++]> \t \t \t \t \t \t <? \t \t \t \t \t \t \t $ c = 0; \t \t \t \t \t \t \t $ index = 0; \t \t \t \t \t \t \t的foreach($ valore为$ chiave2 => $ valore2){ \t \t \t \t \t \t \t \t如果($ C == 0){ \t \t \t \t \t \t \t \t \t回波“​​”。$ date [$ index ++]。“”; \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t \t?> \t \t \t \t \t \t \t \t 名))>“> \t \t \t \t \t \t \t \t <? \t \t \t \t \t \t \t} \t \t \t \t \t \t> \t \t \t \t \t \t?<! - 名)?> “> - > \t \t \t \t \t \t \t \t \t <? \t \t \t \t \t }?>' – Bellots

+0

AHM可你把生成的HTML它会更容易比服务器端代码来解释。 –

回答

-1

而是在每一个运行的jQuery选择的点击如下图所示:

$("td."+replaceAll(" ","_",$(this).val())) 

你可以建立某种类似的缓存:

var cache = {} //<-- declare this outside your click handler 

    //add the code below inside your click handler 
    className = replaceAll(" ","_",$(this).val()) 
    if(!cache[className]) 
     cache[className ] = $("td."+className + ", th."+className); //select all the elements once and store in the cache object 
    $el = cache[className]; 
    if ($(this).is(':checked')) 
     $el.show(); 
    else 
     $el.hide(); 
+0

我试过了,代码工作正常,即使有滞后尚未..;( – Bellots

+0

jQuery缓存已经,这是有点没有意义 – Populus

+1

你有任何文件来备份你的声明?这个jsfiddle似乎证明你可以通过缓存选择器来提高js性能:http://jsfiddle.net/youngjl1/D5UrB/ – lyoung

0

我了解,问题只与复选框,而不是在回调或jQuery的功能。我简单地通过使用无线电输入来解决问题,为页面中的每个复选框添加“真”和“假”无线电输入。