2011-05-14 3 views
1

Я использую jquery для динамического fadeIn контента, основанного на победителях серии баскетбола. Так, например, давайте выйдем на финальные финалы конференции в НБА. Это лучшая из семи серий. Первая команда, выигравшая четыре игры, выигрывает серию. Итак, если для первого входного тега пользователь выбирает Chicago Bulls в качестве победителя. Для второй игры пользователь выбирает Miami Heat в качестве победителя. Основываясь на этих результатах, jquery должен будет затухать в дополнительном теге ввода, потому что, очевидно, серия будет состоять как минимум в 5 играх.динамически fadeIn html на основе значений

Это очень простой. Но, есть ли у кого-нибудь пищу для размышлений о том, как это сделать, чтобы, если бы клиент должен был вернуться и отредактировать победителей игр, он бы постепенно их угасал. Я могу сделать это, используя множество условных утверждений, но мне очень хотелось бы получить пищу для размышлений, поскольку она относится к более эффективному подходу.

<script type="text/javascript"> 
$(document).ready(function(){ 
    var data = <?php echo $teamone_ac; ?>; 
    var soulja = <?php echo $teamtwo_ac; ?>; 

    var away_team_other = $('.away_team_other').html(); 
    var home_team_other = $('.home_team_other').html(); 

    var away_team_wild = $('.away_team_wild').html(); 
    var home_team_wild = $('.home_team_wild').html(); 

    $("#game_one_other").autocomplete({ source: data }); 
    $("#game_two_other").autocomplete({ 
     source: data, 
     select: function(event, ui) 
     { 
      var game_one_other = $('#game_one_other').val(); 
      var game_two_other = ui.item.value; 
      var game_three_other = $('#game_two_other').val(); 

      var arr = [game_one_other, game_two_other, game_three_other,  game_four_other, game_five_other]; 

      var away = away_team_other; 
      var home = away_home_other; 

      var numAway = $.grep(arr, function (elem) { 
       return elem === away; 
      }).length; 

      var numHome = $.grep(arr, function (elem) { 
       return elem === home; 
      }).length; 

      if(game_one_other != game_two_other) 
      { 
       $('#one_four').fadeIn('slow'); 
      } 
     } 
    }); 
    $("#game_three_other").autocomplete({ 
     source: data, 
     select: function(event, ui) 
     { 
      var game_one_other = $('#game_one_other').val(); 
      var game_two_other = $('#game_two_other').val(); 
      var game_three_other = ui.item.value; 

      if(game_two_other == game_three_other && game_two_other != game_one_other) 
      { 
       $('#one_four').fadeIn('slow'); 
      } 
     } 
    }); 

    $("#game_one_wild").autocomplete({ source: soulja }); 
    $("#game_two_wild").autocomplete({ source: soulja }); 
    $("#game_three_wild").autocomplete({ source: soulja }); 

    $('#one_four').hide(); 
    $('#one_five').hide(); 

    $('#two_four').hide(); 
    $('#two_five').hide(); 
}); 

+1

У вас есть рабочий пример, чтобы лучше проиллюстрировать идею? –

+0

Я отправлю код – Lance

+0

Yuck. Давайте не будем этого делать и скажем, что сделали. –

ответ

0

Вы получили форму. Форма имеет не менее n элементов (в этом случае n = 4). Каждый элемент, по-видимому, является избранным/радио, где пользователь может выбрать из любой команды.

<form id="predictWinners" action="submitPredict" method="POST"> 
    <fieldset id="first"> 
     <legend>Game 1</legend> 
     <input class="prediction" type="radio" name="winner" value="[team 1 here]" /> [team 1 here] 
     <br /> 
     <input class="prediction" type="radio" name="winner" value="[team 2 here]" checked="checked" /> [team 2 here] 
     <br /> 
    </fieldset> 
    <!-- repeat for first 4 --> 
    <input type="submit" value="Submit" /> 
</form> 
  1. Приложить семантический класс к каждому из выбираешь, как «предсказание»
  2. Добавление обработчика событий к их onchange методу

    jQuery(document).ready(function(){ 
        jQuery(".prediction").change(function() { 
         gamesNec = findGamesNecessary(); 
         if(gamesNec > 4) 
         { 
          jQuery("fieldset").each(function(index){ 
           if(index > 4 && index <=gamesNec) { jQuery(this).fadeIn() } 
          }); 
         } 
        }); 
    }) 
    
  3. Написать обработчик событий, который вычисляет выигрывает для каждой команды на основе выбора пользователя и сравнивает ее с макс.

  4. Go through each fieldset и исчезать его в/создать его на основе того, сколько осталось

Вы можете написать (х) метод bestOf, чтобы выяснить, сколько количество побед нужны (для НБА плей-офф это 7, но вычисления это сделает ваш код портативным и расширяемым.

bestOf = function(x) { 
    return (x % 2 == 0) ? (x/2) : ((x/2)+0.5) 
} 

findGamesNecessary = function() { 
    seriesLength = 7 
    team1_wins = 0 
    team2_wins = 0 
    //iterate through each user selection and update the wins. Left as an exercise 
    gamesPlayed = team1_wins + team2_wins 
    gamesNecessary = (team1_wins >1 && team2_wins > 1) ? bestOf(seriesLength-gamesPlayed) + gamesPlayed : bestOf(seriesLength) 
    return gamesNecessary; 
} 
  • это может быть не совсем правильно, но я думаю, что это близко. разыгрывают перестановки. Обновление Q с надлежащим если вы их выясняете
Смежные вопросы