开发者

if() else() statement problem ... :/

Can someone please help me with the "if else statement", I'm having problem with this script:

    $('div#wrapper div.teamwrapper:odd').addClass('odd');

    $('div.teamwrapper').each(function(index){
      if($('div.teamwrapper').hasClass('odd开发者_JAVA百科')){
        $(this).css('top', index*35);
      }else{
        $(this).css('top', index*28);
      }
    });

My problem is that,the script above only execute the parameters inside the "if statement". It applies the parameter inside the "if statement" to all "div.teamwrapper" even if the object don't have an "odd" class. Thanks.


  $('div#wrapper div.teamwrapper:odd').addClass('odd');

    $('div.teamwrapper').each(function(index){
      if($(this).hasClass('odd')){
        $(this).css('top', index*35);
      }else{
        $(this).css('top', index*28);
      }
    });


should be

$('div#wrapper div.teamwrapper:odd').addClass('odd');

    $('div.teamwrapper').each(function(index){
      if($(this).hasClass('odd')){
        $(this).css('top', index*35);
      }else{
        $(this).css('top', index*28);
      }
    });


Access object by this inside function

$('div.teamwrapper').each(function(index){
    if($(this).hasClass('odd')){
    $(this).css('top', index*35);
    }else{
    $(this).css('top', index*28);
}
});


you may try this

replace $('div.teamwrapper').hasClass('odd') with $(this).hasClass('odd')

this seems more logical than what you have written.


In this situation, the easiest would be to use the css method with a function that will set the value. You can read about it in the jQuery doc.

$('div#wrapper div.teamwrapper:odd').addClass('odd');

$('div.teamwrapper').css('top', function(index, value){
  if ($(this).hasClass('odd')) {
    return index*35;
  } else {
    return index*28;
  }
});

If you really want to use the each method, do it like this:

$('div.teamwrapper').each(function(index){
  var $me=$(this);
  if($me.hasClass('odd')){
    $me.css('top', index*35);
  }else{
    $me.css('top', index*28);
  }
});

You should save the value of $(this) first into a variable (like $me), and then use that variable afterwards, this will save you a bit of resources, and a good programming practice anyways.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜