2015-02-20 3 views
0

Я добавляю строки в таблицу одним нажатием кнопки.Количество строк в динамически созданной таблице

Что бы я хотел сделать, это когда пользователь нажимает кнопку «Проверить таблицу с динамически генерируемым числом строк». Если количество строк в этой таблице равно «0» - пусто, покажите модальное всплывающее окно.

В противном случае не показывать модальные.

Мой текущий jQuery просто возвращает 0 для num_rows.

$('.odds-btn').click(function() 
    { 
     var rowCount = $('#betting_table tr').length; 

     var bet_type = $(this).attr('data-bet-type'); 
     var bet_line = $(this).attr('data-bet-line'); 

     if(bet_line == undefined) 
     { 
      bet_line = '0'; 
     } 

     var game_id = $(this).attr('data-game-id'); 
     var bet_id = $(this).attr('data-offer-type-id'); 
     var team = $(this).attr('data-team-name'); 
     var odds = $(this).attr('data-odds-fractional'); 

     var url = "/index/build_betslip/" + bet_type + "/" + game_id + "/" + bet_id + "/" + team + "/" + odds + "/" + bet_line; 

     $.ajax({ 
      type: "GET", 
      url: url, 
      success:function() 
      { 
       alert(rowCount); 

       if(rowCount == 0) 
       { 
        // Add To The Bet Slip.... 
        $('.slip-modal').modal('show'); 
       } 

      } 
     }) 

    }) 

Функции PHP Я использую являются:

public function build_betslip() 
    { 
     // Get Bet Type (1, 2, X, bttsyes, bttsno, under, over) 
     $bet_type = $this->uri->segment(3); 

     // Get Game ID 
     $game_id = $this->uri->segment(4); 

     // Get Bet ID (e.g 1X2 = WLD) 
     $bet_id = $this->uri->segment(5); 

     // Get Team Name 
     $teamname = $this->uri->segment(6); 

     // Get Odds 
     $odds1 = $this->uri->segment(7); 
     $odds2 = $this->uri->segment(8); 

     // Get Bet Line (1.5/2.5 - For Under/Over Market) 
     $bet_line = $this->uri->segment(9); 

     $odds = $odds1; 
     $odds .= "/"; 
     $odds .= $odds2; 

     // Build An array titled Bet 
     $bet = array(
      '0' => array(
       'bet_type' => $bet_type, 
       'game_id' => $game_id, 
       'bet_id' => $bet_id, 
       'team'  => urldecode($teamname), 
       'odds'  => $odds, 
       'line'  => $bet_line 
      ) 
     ); 

     $betslip = $this->session->userdata('betslip'); 

     // Create The Betslip For The First Time... 
     if(empty($betslip)) 
     { 
      $this->session->set_userdata('betslip', $bet); 
     } 
     else 
     { 
      // Add To The Betslip Array... 
      $betslip[] = array(
       'bet_type' => $bet_type, 
       'game_id' => $game_id, 
       'bet_id' => $bet_id, 
       'team'  => urldecode($teamname), 
       'odds'  => $odds, 
       'line'  => $bet_line 
      ); 

      $this->session->set_userdata('betslip', $betslip); 
     } 

    } 

    /* 
    * This Function Gets 
    * The Current Users' Bet Slip 
    * And builds a table based on it and returns as 
    * Suitable data 
    */ 

    public function get_betslip() 
    { 
     $betslip = $this->session->userdata('betslip'); 

     if(empty($betslip)) 
     { 
      echo "<p>Bet slip is currently empty</p>"; 
     } 
     else 
     { 
      // Return The Table... 
      echo "<table class='table' id='betting_table'>"; 
       echo "<thead>"; 
        echo "<th>&nbsp;</th>"; 
        echo "<th>Your Selection</th>"; 
        echo "<th>Odds</th>"; 
       echo "</thead>"; 
       echo "<tbody>"; 
        foreach($betslip as $key => $value) 
        { 
         echo '<tr class="table-row-' . $key .'">'; 
         echo "<td><a class='bet-cross' data-row='$key' href='#'>x</a></td>"; 
         echo "<td>"; 
         echo $value['team']; 
         echo "</td>"; 
         echo "<td>"; 
         echo $value['odds']; 
         echo "</td>"; 
         echo "</tr>"; 
        } 
       echo "</tbody>"; 
      echo "</table>"; 

      echo "<a class='clear-slip' href='".base_url('betslip/clear')."'>Clear Slip</a>"; 

      echo "<a class='site-btn compare' href='".base_url('betslip')."'></a>"; 
     } 


    } 

Пример ответа от AJAX кода:

<table class='table' id='betting_table'><thead><th>&nbsp;</th><th>Your Selection</th><th>Odds</th></thead><tbody><tr class="table-row-0"><td><a class='bet-cross' data-row='0' href='#'>x</a></td><td>Wigan Athletic VS Charlton Athletic &#40;Draw&#41;</td><td>5/2</td></tr><tr class="table-row-1"><td><a class='bet-cross' data-row='1' href='#'>x</a></td><td>Atalanta</td><td>21/1</td></tr></tbody></table><a class='clear-slip' href='http://local.oddssweeper/betslip/clear'>Clear Slip</a><a class='site-btn compare' href='http://local.oddssweeper/betslip'></a> 

По умолчанию таблица пуста.

Благодаря

+1

Я не вижу, где вы добавляете строки в свой стол? – Brewal

+0

Добавление строк в таблицу, а затем подсчет количества строк, которые добавляются, чтобы увидеть, есть ли хотя бы один, кажется немного запутанным. Не можете ли вы просто установить флаг при добавлении строки? – paul

+0

Похоже, вам нужно добавить код в свой обработчик успеха, чтобы добавить данные, возвращаемые с вашего запроса Ajax, в таблицу –

ответ

0

Вы должны сначала проверить, что там любая строка <tr> присутствует в таблице,

например:

var rowCount = $('#betting_table').find('tr').length; 

выше кода узнать, что строка присутствует в таблице или нет ,

0

Я вижу, что вы возвращаете таблицу из AJAX так, чтобы сделать встречную работу, которую нужна переместить var rowCount = $('#betting_table tr').length; в Ajax обратного вызова и запустить выбор на response, то jQuery найти таблицу и дать вам количество

var rowCount = 0; 
.... 

$.ajax({ 
     type: "GET", 
     url: url, 
     success:function(resp) 
     { 
      //try checking in response 
      rowCount = $(resp).find('#betting_table tr').length; 

      alert(rowCount); 

      if(rowCount == 0) 
      { 
       // Add To The Bet Slip.... 
       $('.slip-modal').modal('show'); 
      } 

     } 
    }) 
+0

Привет @Saqueib, это всегда возвращает «0». – StuBlackett

+0

ответ обновлен, он должен работать – Saqueib

Смежные вопросы