проблема оператора if () else () ...: / - PullRequest
2 голосов
/ 09 марта 2011

Может кто-нибудь помочь мне с «оператором if else», у меня проблема с этим скриптом:

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

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

Моя проблема в том, что вышеприведенный скрипт выполняет только параметры внутри оператора if. Он применяет параметр внутри оператора if ко всем «div.teamwrapper», даже если у объекта нет «нечетного» класса. Спасибо.

Ответы [ 5 ]

3 голосов
/ 09 марта 2011
  $('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);
      }
    });
1 голос
/ 09 марта 2011

В этой ситуации проще всего было бы использовать метод css с функцией, которая установит значение.Вы можете прочитать об этом в 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;
  }
});

Если вы действительно хотите использовать каждый метод, сделайте это так:

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

Выследует сначала сохранить значение $(this) в переменной (например, $me), а затем использовать эту переменную, это сэкономит вам немного ресурсов и, в любом случае, будет хорошей практикой программирования.

1 голос
/ 09 марта 2011

Вы можете попробовать это

заменить $('div.teamwrapper').hasClass('odd') на $(this).hasClass('odd')

это кажется более логичным, чем то, что вы написали.

1 голос
/ 09 марта 2011

Доступ к объекту по this внутри функции

$('div.teamwrapper').each(function(index){
    if($(this).hasClass('odd')){
    $(this).css('top', index*35);
    }else{
    $(this).css('top', index*28);
}
});
1 голос
/ 09 марта 2011

должно быть

$('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);
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...