我正在尝试突出显示表格的父tr
,如果孩子td > p
有某个类。我有以下内容:
$(document).ready(function(){
var $target = $('.flag-wrapper p').closest("tr");
var $element = $('.flag-wrapper p').hasClass("selector-on");
if ( $element ) {
$target.addClass("marked-row");
} else {
// whatsoever
}
});
现在我的问题是我不能只针对当前的 tr 。我尝试过使用$(this),但据我所知,它在if语句中不起作用。
如何了解我应该如何处理这一点将非常感激。另外,我想使用.click()事件会更容易,但是我必须在页面加载时检查这个.hasClass()而不是用户操作。
答案 0 :(得分:5)
只需使用:
$('.flag-wrapper p.selector-on').closest('tr').addClass("marked-row");
这会查找p
内具有类.flag-wrapper
的所有.selector-on
个元素。然后,它会获得每个匹配项中最接近的tr
,并添加.marked-row
类。
答案 1 :(得分:1)
循环遍历每一个并单独处理。
$('.flag-wrapper p').each(function(){
var $this = $(this);
var $target = $this.closest("tr");
if($this.hasClass("selector-on")){
$target.addClass("marked-row");
} else {
// whatsoever
}
});
答案 2 :(得分:0)
你只需要做
$('tr:has(.flag-wrapper p.selector-on)').addClass('marked-row');
或
$('tr').has('.flag-wrapper p.selector-on').addClass('marked-row');
答案 3 :(得分:0)
你可以在段落上loop单独定位它们:
$(document).ready(function(){
$('.flag-wrapper p').each(function() {
var $curElement = $(this);
if ($curElement).hasClass("selector-on")) {
$curElement.closest("tr").addClass("marked-row");
} else {
// whatsoever
}
});
});
答案 4 :(得分:0)
$('.flag-wrapper p.selector-on').closest('tr').addClass('marked-row');