окно загрузки не отображает правильное остальное сообщение - PullRequest
0 голосов
/ 12 октября 2019

У меня есть код с событием .on, и он отлично работает. Однако, если я изменю его на загрузку окна или готовность к документу, он отображает «данные в строке», хотя данных нет. Я запутался, почему это работает на событие щелчка, а не на нагрузку. Комментарии будут оценены как это сводит меня с ума. Большое спасибо

Это работает

$('#nirqst').on('click', 'tr', function () {
var table = $('#nirqst').DataTable();
 //get the current row
  var currentRow = $(this).closest("tr");
  var col1 = currentRow.find(".dataTables_empty").html(); 
  if((col1)=='No data available in table') { 
    console.log(col1); 
    table.buttons().disable();
    } else {
    console.log('data in row');
    table.buttons().enable();
    }
});

Это не

$( window ).on( "load", function() {
var table = $('#nirqst').DataTable();
 //get the current row
  var currentRow = $(this).closest("tr");
  var col1 = currentRow.find(".dataTables_empty").html(); 
  if((col1)=='No data available in table') { 
    console.log(col1); 
    table.buttons().disable();
    } else {
    console.log('data in row');
    table.buttons().enable();
    }
});

Сгенерированная таблица HTML

<table class="display stripe dataTable no-footer" id="nirqst" role="grid" aria-describedby="nirqst_info" width="100%" cellspacing="0">
  <!--        <caption>New Intake Requests</caption>-->
  <thead>
    <tr role="row">
      <th style="width: 4%;" class="hide_id sorting_disabled" rowspan="1" colspan="1" aria-label="ID#">ID#</th>
      <th style="width: 4%;" class="hide_id sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="ID Number: activate to sort column ascending">ID Number</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" style="width: 20px;" aria-label="Select-->: activate to sort column ascending">Select
        <!--<input type="checkbox" id="select_all" name="select_intake" />-->
      </th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" style="width: 40px;" aria-label="Service: activate to sort column ascending">Service</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="Activity: activate to sort column ascending">Activity</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="Dept: activate to sort column ascending">Dept</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="Company: activate to sort column ascending">Company</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" style="width: 160px;" aria-label="Address: activate to sort column ascending">Address</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="User: activate to sort column ascending">User</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="Box#: activate to sort column ascending">Box#</th>
      <th class="sorting" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="Destroy Date: activate to sort column ascending">Destroy Date</th>
      <th class="sorting_desc" tabindex="0" aria-controls="nirqst" rowspan="1" colspan="1" aria-label="Request Date: activate to sort column ascending" aria-sort="descending">Request Date</th>
      <th class="sorting_disabled" rowspan="1" colspan="1" style="width: 110px;" aria-label="Action">Action</th>
    </tr>
  </thead>
  <tbody>
    <tr class="odd">
      <td colspan="11" class="dataTables_empty" valign="top">No data available in table</td>
    </tr>
  </tbody>
</table>

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Я думаю, что проблема в $ (this), который ссылается на окно во втором случае. Вы должны попробовать это

 $( window ).on( "load", function() {

  $('#nirqst tr').each(function () {
   var table = $('#nirqst').DataTable();
  var col1 = $(this).find(".dataTables_empty").html(); 

   if((col1)=='No data available in table') { 
     console.log(col1); 
      table.buttons().disable();
   } else {
      console.log('data in row');
     table.buttons().enable();
    }

  });
});
0 голосов
/ 12 октября 2019

try, которое должно срабатывать при загрузке DOM.

jQuery.ready(function(){
  console.log("DOM loaded");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...