Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery按输入值过滤输入_Jquery - Fatal编程技术网

jQuery按输入值过滤输入

jQuery按输入值过滤输入,jquery,Jquery,是否可以根据标签文本的一部分在DOM中搜索标签 例如,如果我有以下标记: <input type="checkbox" id="1"> <label for="1">Check Box One</label> <br /> <input type="checkbox" id="2"> <label for="1">Check Box Two</label> <br /> <input type=

是否可以根据标签文本的一部分在DOM中搜索标签

例如,如果我有以下标记:

<input type="checkbox" id="1">
<label for="1">Check Box One</label>
<br />
<input type="checkbox" id="2">
<label for="1">Check Box Two</label>
<br />
<input type="checkbox" id="3">
<label for="1">Check Box Three</label>
<br />

复选框一

复选框二
复选框三

我想能够搜索“T框”并获得最后两个标签。或者我只需要搜索所有标签,运行每个查询,然后手动检查文本值吗?

为什么不搜索选中的输入?使用相关名称设置复选框的ID。
为它们添加一个类和$('.searched_class:checked')。val()将为您提供所有选中的复选框值

为什么不搜索选中的输入?使用相关名称设置复选框的ID。
为它们添加一个类和$('.searched_class:checked')。val()将为您提供所有选中的复选框值

循环将是最简单的方法:

var arrMatchingLabels = [];
$("label").each(function(index) {
    if ($(this).html().indexOf("Box T") >= 0) 
        arrMatchingLabels.push($(this));
});

var s = "Found " + arrMatchingLabels.length + " matching labels: \n";
for (var i = 0; i < arrMatchingLabels.length; i++)
    s += arrMatchingLabels[i].html() + "\n";
alert(s);
var arrMatchingLabels=[];
$(“标签”)。每个(函数(索引){
if($(this.html().indexOf(“Box T”)>=0)
arrMatchingLabels.push($(this));
});
var s=“Found”+arrMatchingLabels.length+“匹配标签:\n”;
对于(变量i=0;i
循环将是IMO最简单的方式:

var arrMatchingLabels = [];
$("label").each(function(index) {
    if ($(this).html().indexOf("Box T") >= 0) 
        arrMatchingLabels.push($(this));
});

var s = "Found " + arrMatchingLabels.length + " matching labels: \n";
for (var i = 0; i < arrMatchingLabels.length; i++)
    s += arrMatchingLabels[i].html() + "\n";
alert(s);
var arrMatchingLabels=[];
$(“标签”)。每个(函数(索引){
if($(this.html().indexOf(“Box T”)>=0)
arrMatchingLabels.push($(this));
});
var s=“Found”+arrMatchingLabels.length+“匹配标签:\n”;
对于(变量i=0;i
也许您在标签和输入周围放置了div。然后可以根据过滤器隐藏和显示该div。我会将文本搜索作为一个属性来分隔视觉内容和逻辑(稍后您可能会本地化应用程序并保持搜索关键字不变,但用户会看到例如西班牙语文本)


我希望这有帮助

也许您在标签和输入周围放置了div。然后可以根据过滤器隐藏和显示该div。我会将文本搜索作为一个属性来分隔视觉内容和逻辑(稍后您可能会本地化应用程序并保持搜索关键字不变,但用户会看到例如西班牙语文本)

我希望这有帮助

自定义jQuery选择器过滤器 我认为最好的、可重用的解决方案是创建jQuery选择器过滤器:

$.extend($.expr[":"], {
    hastext: function(el, index, match) {
       return $(el).text().indexOf(match[3]) >= 0;
    }
});
然后可以这样使用:

$("label:hastext('Box T')");
$("label:hastext(Box T)"); // would do the trick just as well
见鬼,以后它可以用在任何选择器上

$("div.main table:first td:hastext(Get it?)")
这段代码未经测试,可能无法按预期工作,但您已经明白了这一点。它至少应该检查
匹配[3]

自定义jQuery选择器过滤器中是否有值 我认为最好的、可重用的解决方案是创建jQuery选择器过滤器:

$.extend($.expr[":"], {
    hastext: function(el, index, match) {
       return $(el).text().indexOf(match[3]) >= 0;
    }
});
然后可以这样使用:

$("label:hastext('Box T')");
$("label:hastext(Box T)"); // would do the trick just as well
见鬼,以后它可以用在任何选择器上

$("div.main table:first td:hastext(Get it?)")

这段代码未经测试,可能无法按预期工作,但您已经明白了这一点。它至少应该检查
匹配[3]
..

中是否有一个值,这不是我所追求的行为,本质上,我会在屏幕上有一组相当大的选项,我希望用户能够通过选项名称(即标签中的文本)来筛选它们。这不是我所追求的行为,基本上,我会在屏幕上有一个相当大的选项集,我希望用户能够通过选项的名称(即标签中的文本)来过滤它们。