2012-07-23 72 views
0

我正在构建一个简单的asp页面,我在其中列出了每个名称左侧的复选框列表。 我已经成功地创建一个简单的jQuery脚本,让隐藏和显示基于输入表行: http://jsfiddle.net/Tq97v/(第一部分)jQuery可搜索的复选框列表和三态复选框

,你可以看到我可以输入名称的一部分,然后特定行被隐藏。 使用红色“x”我可以取消选中所有复选框。

我现在要做的是将静态红色“x”改成三态复选框。 不知道如何开始。

我是否必须将更改侦听器添加到列表中的每个复选框?

第二件事 - 如何在网站上创建同一个“插件”的多个实例。 现在我通过它来识别输入,但是将该输入作为参数调用函数会很好,并且在输入之后将会罚用表并创建必要的逻辑。 这样我可以在页面上多次调用函数以拥有多个列表。

我不是为整个解决方案要求(当然它始终是欢迎的),但我需要的是知道如何以有效的方式做到这一点,并优化的可能,因为有时我的列表中有500多个元素。

P.S.不要看HTML代码,它是ASP生成的。


我发现这个插件:https://github.com/bcollins/jquery.tristate,但我不知道怎么跟我的列表中使用它。


UPDATE:

我已经成功地把我的代码到功能,但现在我必须呼吁每个列表3种功能。
这是我的更新代码:http://jsfiddle.net/65MEV/4/
我该如何将它更改为一个功能?它会更好吗?
这是我更新的代码。仍在考虑如何做不确定复选框而不是删除图像。

UPDATE2

我建立工作代码:)
http://jsfiddle.net/65MEV/9/
不过,我想尽可能地改进它。
欢迎任何建议!

回答

0

一个三态复选框就像三个入口设备:一个错觉。

你真正想要的是使复选框indeterminate(通过设置相同名称的属性为true)。要实现这一点,你需要在每一个复选框change(或click)处理器,那么你就需要检查,如果所有的人都在同一个国家,如果没有,那么你设置indeterminate属性。这真是一件麻烦事,因为你很少看到indeterminate复选框,所以大多数用户不知道如何处理它们。如果可能,应避免。

+0

这是一个选项,但我的解决方案必须在IE7中工作。对不起,我没有在我的问题中提到它。所以我认为使用图像会更加容易 - 它可以在旧版浏览器中使用。 – Misiu 2012-07-23 14:02:48

+0

刚刚测试过:它在IE7中工作。 – 2012-07-23 14:06:44

+0

对不起,没有检查它,只是发现一些博客上的条目,现在已被证实:)我更新了我的问题,所以我可以在一个网站上有多个列表,但我仍然有问题与该复选框。 – Misiu 2012-07-24 12:39:33

0

相对于其他元素创建相同插件访问元素的多个实例。

例如:在你的情况下,而不是保持项目在jQuery对象var $tableRows = $('table.myList tr');访问他们的事件。

$('#user_name').keyup(function() { 
    var sValue = $.trim($('input#user_name').val()); 
    if(lastInput==sValue) return; 
    var $tableRows = $(this).next().next().find("table.myList tr"); 
    if (sValue == '') { 
     $tableRows.show(); 
    } else { 
     $tableRows.each(function() { 
      var oLabel = $(this).find('label'); 
      if (oLabel.length > 0) { 
       if (oLabel.text().toLowerCase().indexOf(sValue.toLowerCase()) >= 0) { 
        $(this).show(); 
       } else { 
        $(this).hide(); 
       } 
      } 
     }); 
     lastInput=sValue; 
    } 
}); 

而你只有你的实际列表。

对于树状复选框,你不需要插件只需添加一个按钮或链接,每次点击检查它的状态,你可以保持状态jQuery data,并根据这些数据改变元素图像。

+0

我保留了对象中的元素来加速我的代码。这种方式元素只存储一个。如果我愿意这样做,那么每次按下输入内的键时,都会创建包含所有tr元素的列表。这适用于50个元素,但是当我有500多个元素时,这个老的pc会变慢。 – Misiu 2012-07-24 11:59:37

+0

我用功能方法更新了我的问题,但我总是打开建议:)特别是那个不确定复选框。 – Misiu 2012-07-24 12:36:55