如果用jquery声明

时间:2012-03-20 15:47:07

标签: jquery

我正在试图弄清楚如何使用此代码执行if语句。 if语句应该根据是否读取来确定li是否获得类名。决定它的是数据[x] [messageRead] == 0但不确定如何在此追加内部执行此操作。

$.each(data, function(x)
{
    $('.mail').append('<li><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>'); 
});

9 个答案:

答案 0 :(得分:2)

您可以使用ternary operator ?:

$.each(data, function(x)
{
    $('.mail').append('<li' + (data[x][messageRead] == 0 ? 'class="ClassName"' : '') + '><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>'); 
});

答案 1 :(得分:1)

对于这种情况,建议使用jQuery API中的方法.toggleClass()

  

http://api.jquery.com/toggleClass/

答案 2 :(得分:1)

实际值将传递给回调的第二个值。然后首先创建li元素,然后使用严格的相等比较,如果你应该添加类:

$.each(data, function(x, value)
{
    var li = $('<li><a href=""><strong>Received: '+ value.dateSent +'</strong><small>'+ value.subject +'</small><small>From: '+ value.firstName+' '+ value.lastName +'</small></a></li>');
    if(value.messageRead === 0) {
        li.addClass('the-class');
    }
    $('.mail').append(li);
});

答案 3 :(得分:1)

只是javascript ...

$.each(data, function(x)
{
    if (data[x][messageRead] == 0) {
        $('.mail').append('<li><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>');
    } else {
        $('.mail').append('<li class="read"><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>');
    }
});

你可以重构一下,但原则就像其他任何东西一样

答案 4 :(得分:1)

尝试使用三元运算符

$.each(data, function(x)
{
    $('.mail').append('<li' + (data[x][messageRead] == 0 ? ' class="yourclass"' : '')><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>'); 
});

应该做的伎俩。

答案 5 :(得分:1)

您可以这样做:

$.each(data, function(x)
{
    $('.mail').append('<li' + (data[x][messageRead] == 0 ? ' class="myClass"' : '') + '><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>'); 
});

答案 6 :(得分:1)

做这样的事情:

$.each(data, function(x)
{
    $('.mail').append('<li class="' + ((data[x][messageRead] == 0)?'read':'unread') + '"><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>'); 
});

希望它有所帮助!

答案 7 :(得分:1)

我相信这会给你你想要的东西。

$.each(data, function(x)
{
    var item = $('<li><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>');
    if(data[x]['messageRead'] == 0){
        item.addClass('new');
    }
    $('.mail').append(item); 
});

答案 8 :(得分:1)

您可以使用三元运算符,并仅在满足条件时添加类。

为了便于阅读,我将类存储在变量中,但它当然也可以在追加中完成。

$.each(data, function(x)
{
    var classString = (data[x]['messageRead'] == 0) ? " class=\"read\"" : "";
    $('.mail').append('<li' + classString +'><a href=""><strong>Received: '+data[x]['dateSent']+'</strong><small>'+data[x]['subject']+'</small><small>From: '+data[x]['firstName']+' '+data[x]['lastName']+'</small></a></li>'); 
});