我试图用2个条件写一个if语句。
条件一是查看<time>
是否具有班级class="overdue"
。
第二个条件是查看<div>
内的日期时间和<a>
内的日期时间是否匹配。
当满足条件1和条件2时,结果将是<a>
标签将被赋予红色类,但仅在满足两个条件的情况下。
jsfiddle - http://jsfiddle.net/qk79jgL4/
HTML
<div><time class="overdue" datetime="2013-03-10">March 10th, 2013</time></div>
<div><time datetime="2013-03-11">March 11th, 2013</time></div>
<a href="#" class="cal-evt"><time datetime="2013-03-10">10</time></a>
<a href="#" class="cal-evt"><time datetime="2013-03-11">11</time></a>
CSS
.red {
background-color:red;
}
的jQuery
if ($("time").hasClass("overdue")) {
$("a.cal-evt").addClass("red");
}
return false;
答案 0 :(得分:1)
我建议代替if
,在适当的时候使用
// find the element with a datetime attribute within an a element of
// class 'cal-evt', filter that collection:
$('a.cal-evt [datetime]').filter(function(){
// keeping only those whose datetime attribute is equal to the datetime attribute
// of the (first) 'time.overdue' element:
return this.getAttribute('datetime') == $('time.overdue').attr('datetime');
// find the closest ancestor a element, and add the class 'red' to it:
}).closest('a').addClass('red');
参考文献:
答案 1 :(得分:1)
您可以使用jquery的遍历方法并使用它们来定位您想要的元素
$("time.overdue").each(function(){ // for each time that has overdue class
var time = $(this).attr('datetime'); // store its datetime value
$("a.cal-evt").filter(function(){ // find all the cal-evt links that contain the same time
return $('time', this).attr('datetime') == time;
}).addClass("red"); // apply the red class on the filtered items
});
演示
答案 2 :(得分:0)
也许是这样的:
$( "time" ).filter( "[datetime='" + $( 'time.overdue' ).attr( 'datetime' ) + "']" ).parent( 'a' ).addClass("red");
<强> FIDDLE 强>
答案 3 :(得分:-1)
$("time").each(function() {
if($(this).hasClass("overdue")){
var mydate = $(this).attr("dateTime");
$(".cal-evt").each(function() {
if($(this).find("time").attr("dateTime")==mydate){
$(this).addClass("red");
}
});
}
});
return false;
工作小提琴: http://jsfiddle.net/qk79jgL4/15/
谁曾经投过它,为什么?它按照要求运作。