jQuery:class和.each()

jQuery:class和.each(),jquery,each,Jquery,Each,我正在尝试向div(.views行)中的元素添加类。我遇到的问题是.views行在页面上重复,这是不可避免的,而我尝试设置样式的元素最终都是相同的类,不管它们是否应该。代码可能更好地解释了这一点: $(".views-row").each(function(){ if ($((this)" .field-name-field-warning:contains('High')").length) { $((this)" .field-name-field-w

我正在尝试向div(.views行)中的元素添加类。我遇到的问题是.views行在页面上重复,这是不可避免的,而我尝试设置样式的元素最终都是相同的类,不管它们是否应该。代码可能更好地解释了这一点:

$(".views-row").each(function(){
        if ($((this)" .field-name-field-warning:contains('High')").length) {
            $((this)" .field-name-field-warning").addClass("fault-high");
            $((this)" .field-name-field-warning .field-label").addClass("disappear");
            $((this)" .field-name-field-warning .field-items").addClass("disappear");
        }
        if ($((this) ".field-name-field-warning:contains('Moderate')").length) {
            $((this) ".field-name-field-warning").addClass("fault-moderate");
            $((this) ".field-name-field-warning .field-label").addClass("disappear");
            $((this) ".field-name-field-warning .field-items").addClass("disappear");
        }
});
我想我在(这个)部分遇到了麻烦。有什么想法吗

谢谢。

在本机上使用:

$(this).find("selector");

如果要选择当前元素中的任何元素,有两种方法

使用:

通过提供上下文(实际上与查找相同):


当.addClass()将为您迭代所有元素时,这里不需要使用.each()

您可以从以下内容开始:

var containsHigh = $(".views-row .field-name-field-warning:contains('High')")
containsHigh.addClass('fault-high');
containsHigh.find('.field-label, .field-items').addClass('disappear');

var containsModerate = $(".views-row .field-name-field-warning:contains('Moderate')")
containsModerate.addClass('fault-moderate');
containsModerate.find('.field-label, .field-items').addClass('disappear');
var warnings = $(".views-row .field-name-field-warning");
warnings.filter(":contains('High')")
    .addClass('fault-high')
    .find('.field-label, .field-items').addClass('disappear');

warnings.filter(":contains('Moderate')")
    .addClass('fault-moderate')
    .find('.field-label, .field-items').addClass('disappear');
然后,通过以下链接方法,让您变得更为时尚:

var containsHigh = $(".views-row .field-name-field-warning:contains('High')")
containsHigh.addClass('fault-high');
containsHigh.find('.field-label, .field-items').addClass('disappear');

var containsModerate = $(".views-row .field-name-field-warning:contains('Moderate')")
containsModerate.addClass('fault-moderate');
containsModerate.find('.field-label, .field-items').addClass('disappear');
var warnings = $(".views-row .field-name-field-warning");
warnings.filter(":contains('High')")
    .addClass('fault-high')
    .find('.field-label, .field-items').addClass('disappear');

warnings.filter(":contains('Moderate')")
    .addClass('fault-moderate')
    .find('.field-label, .field-items').addClass('disappear');

看起来您正试图使用
this
查找元素中的元素。您应该
找到该方法,并
筛选
以筛选匹配元素集中的元素

下面是完整的简化代码

$(".views-row").each(function(){
     var $fieldWarning = $(this).find(".field-name-field-warning");
     if($fieldWarning.length){
        if ($fieldWarning.filter(":contains('High')").length) {
            $fieldWarning.addClass("fault-high");
            $fieldWarning.find(".field-label").addClass("disappear");
            $fieldWarning.find(".field-items").addClass("disappear");
        }
        if ($fieldWarning.filter(":contains('Moderate')").length) {
            $fieldWarning.addClass("fault-moderate");
            $fieldWarning.find(".field-label").addClass("disappear");
            $fieldWarning.find(".field-items").addClass("disappear");
        }
     }
});
引用:

$(此)将是应用了“视图行”类的HTML元素。您希望
$(此)
在当前上下文中做什么?我希望
$(此)
引用每个.views行..find():这是一个很棒的方法。谢谢