jQuery:class和.each()
我正在尝试向div(.views行)中的元素添加类。我遇到的问题是.views行在页面上重复,这是不可避免的,而我尝试设置样式的元素最终都是相同的类,不管它们是否应该。代码可能更好地解释了这一点: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
$(".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():这是一个很棒的方法。谢谢