jQuery - 如果包含2个条件的语句在两个条件都通过时添加一个类

时间:2014-10-21 19:28:04

标签: javascript jquery if-statement

我试图用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;

4 个答案:

答案 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');

JS Fiddle demo

参考文献:

答案 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

});

http://jsfiddle.net/qk79jgL4/9/

演示

答案 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/

谁曾经投过它,为什么?它按照要求运作。