jquery包含未找到上一个类

jquery包含未找到上一个类,jquery,contains,Jquery,Contains,但这只会使id1不可见 更新: 谢谢,所有的JSFIDLE都工作了,但是它不能与我原来的html结构一起工作,我现在在上面更新了它。同时隐藏dis1和dis3也很好。这将隐藏id1和id3 $(".orderDiv") .not(':contains("KEYWORD")') .prevAll('.mainDiv:first') .css('display','none'); 您可以使用以下功能: $(".orderDiv").not(':contains("K

但这只会使id1不可见

更新:
谢谢,所有的JSFIDLE都工作了,但是它不能与我原来的html结构一起工作,我现在在上面更新了它。同时隐藏dis1和dis3也很好。

这将隐藏id1和id3

$(".orderDiv")
    .not(':contains("KEYWORD")')
    .prevAll('.mainDiv:first')
    .css('display','none');
您可以使用以下功能:

    $(".orderDiv").not(':contains("KEYWORD")').prevAll('.mainDiv').not(':eq(1)').each(function()
         {
         $(this).css('display','none')
      });
如果您只想显示匹配的主div和订单div,还可以将以下内容链接到底:

$('.mainDiv').filter(function() {
    return !$(this).next('.orderDiv:contains(KEYWORD)').length;
}).hide();
根据您的编辑进行更新


只有您要隐藏的id1和id3已更新我的答案,这应该适用于您的新结构是否知道为什么$'.orderDiv:containsKEYWORD.show.prev.mainDiv.show;假设找到的关键字的显示之前设置为无,则无法显示该关键字的.mainDiv?因为mainDiv不是orderDiv的上一个,所以必须执行$'.orderDiv:containsKEYWORD'.show.prev'table.prev'.dispatch'.prev.mainDiv.show;哦,好的,谢谢,但是如果我的结构被任何html标记改变,它就不再正确了。是否有方法从关键字匹配中查找最后一个类.mainDiv搜索?在这种情况下,我会将每一行包装成一个div,然后您可以执行$'.orderDiv:containsKEYWORD.show.parent.children.mainDiv'谢谢,但它也会显示错误的.mainDiv,而且无法更改div结构-是一个封闭系统
$('.mainDiv').filter(function() {
    return !$(this).next('.orderDiv:contains(KEYWORD)').length;
}).hide();
.next('.orderDiv').hide();
var divs = $('.orderDiv').not(':contains(KEYWORD)')

divs.each(function() {
    var div = $(this);
    div.hide()
        .prev('table').hide()
        .prev('.dispatch').hide()
        .prev('.mainDiv').hide();
});