繁体   English   中英

如何检查html是否有任何html元素包含某个对象的文本

[英]How to check if html if any html element contains text from some Object

我有一些带有标签和值的对象。 这些元素保存一些数据。 现在,我想循环处理html元素并检查什么元素与此元素匹配。 对象称为ui。

在此处输入图片说明

现在,我想从任何对象元素中选择包含文本的所有元素。 这些元素具有.img类。 下面是简单的javascript:

$("#project").autocomplete({
    source: Items,
    appendTo: ".autocomplete",
    minLength: 2,
    response: function (event, ui) {
        if (ui.content.length == 0) {
            return false;
        }
        var content = ui.content[0].label;

        $.each($('.img'), function () {
            if ($(this).is(':contains(' + content + ')')) {
                return;
            } else {
                $(this).fadeOut(100);
            }
        });
    }
});

此代码充当自动完成功能,我想隐藏所有与ui对象中的数据不匹配的润色剂。 这段代码对我来说几乎可以正常工作,但是有一件事情会破坏事情:

var content = ui.content[0].label;

这仅从对象中选择第一项,而我正在寻找一种方法,不仅从第一对象元素[0]中检查所有对象,以检查文本是否包含数据。

谢谢你的建议。

您可以在$ each回调中添加循环:

$.each($('.img'), function() {
    for (var i = 0; i < ui.content.length; i++) {
        var content = ui.content[i].label;
        ...
    }
});

编辑:更改为var

我为您创建了一个jsfiddle,如果我理解这个问题

var matchLabelString=_.reduce(ui,function(accumulateString,current){

  if(accumulateString == ""){
    return current.label;
  }
  return accumulateString + "|"+current.label;
},"")

var regex = new RegExp("^"+matchLabelString); 
$.each($('.img'), function () {

     if (regex.test($(this).text())) {
        return;
     } else {
        $(this).fadeOut(100);
     }
 });

https://jsfiddle.net/3o1oy5y2/

编辑:我看到您的代码,并且我认为我的代码仍然可以工作。 尝试一下,您会看到我已经使用下划线库来创建由|分隔的字符串。 从数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM