我有一个 asp.net 页面,其中有两个动态构建的 jquery 可排序无序列表。我正在使用它将项目从一个列表拖放到另一个列表。那部分工作正常。但是,我现在需要能够过滤列表中的项目。我找到了使用选择器的代码,但它们似乎都使用了包含锚点的列表项
('#titles>ul>li>a')
.
当我'>a"
从选择器中删除时,离开
'#titles>ul>li'
,它停止工作。
我已经尝试了几次迭代,但似乎没有任何效果。任何帮助将不胜感激。
我有一个 asp.net 页面,其中有两个动态构建的 jquery 可排序无序列表。我正在使用它将项目从一个列表拖放到另一个列表。那部分工作正常。但是,我现在需要能够过滤列表中的项目。我找到了使用选择器的代码,但它们似乎都使用了包含锚点的列表项
('#titles>ul>li>a')
.
当我'>a"
从选择器中删除时,离开
'#titles>ul>li'
,它停止工作。
我已经尝试了几次迭代,但似乎没有任何效果。任何帮助将不胜感激。
我使用了Kilian Valkhof 的帮助代码:
jQuery.expr[':'].contains = function(a,i,m){
return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
这段代码实际上允许我在我的表达式中使用选择器 :contains。
使用助手,我可以找到包含给定文本的任何元素。当我找到匹配的元素时,我会向上查找 DOM 树以找到最近的li 标签。匹配的 li 标签是我想要隐藏(或显示)的。
filter = "textToSearch";
$matches = $("ul").find(':contains(' + filter + ')').closest('li');
$('li', list).not($matches).hide();
$matches.show();