скрыть таблицу, если все поля данных - тд с несколькими значениями диапазона являются пустыми

0

$scope.hide_emptytable() = function{
if ($.trim($('.acf-dynamic-table .field').text())=="") {
    $('.acf-dynamic-table').hide();
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<div ng-repeat="t in[]">
<table class="acf-dynamic-table">
<tr>
<td>Name</td>
<td>Address</td>
</tr>
<tr>
<td class="field">t.name</td>
<td class="field"><span>t.ward_no</span> <span>t.street</span> <span>t.city</span> <span>t.state</span> <span>t.postcode</span></td>
</tr>
</table>
</div>

<div ng-repeat="t in []">
<table class="acf-dynamic-table">
<tr>
<td>Name</td>
<td>Address</td>
</tr>
<tr>
<td class="field"></td>
<td class="field"><span></span> <span></span> <span></span> <span></span> <span></span></td>
</tr>
</table>
</div>
<span style="display : none">{{hide_emptytable()}}</span>

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

  • 0
    не уверен, является ли это причиной вашей проблемы, но: = function{ является синтаксической ошибкой, у вас нет списка параметров, например, function(){

3 ответа

0

Вы можете решить свою проблему с помощью этого кода.

$(function(){
  $('.acf-dynamic-table .field')
  .has('span')
  .each(function(){
    if($(this).children().not(':empty').length == 0)
      $(this).parents('table').hide();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id='print'></div>
<div ng-repeat="t in[]">
  <table id='1' class="acf-dynamic-table">
    <tr>
      <td>Name1</td>
      <td>Address1</td>
    </tr>
    <tr>
      <td class="field">t.name</td>
      <td class="field"><span>t.ward_no</span> <span>t.street</span> <span>t.city</span> <span>t.state</span> <span>t.postcode</span></td>
    </tr>
  </table>
</div>

<div ng-repeat="t in []">
  <table id='2' class="acf-dynamic-table">
    <tr>
      <td>Name2</td>
      <td>Address2</td>
    </tr>
    <tr>
      <td class="field"></td>
      <td class="field"><span></span> <span></span> <span></span> <span></span> <span></span></td>
    </tr>
  </table>
</div>
0

Я бы сменил обезглавленную таблицу, чтобы возвратить логическое значение и использовать ng-if = "hide_emptytable" в таблице.

$scope.hide_emptytable() = function{
    return ($.trim($('.acf-dynamic-table .field').text())=="") 
}
0

Правильный код должен быть

$scope.hide_emptytable = function(){
   return $.trim($('.acf-dynamic-table .field').text()) == "";      
}

то вы должны использовать ng-show

ng-show = hide_emptytable()

Совет вам не смешивает jquery с angularjs.Angularjs использует шаблон MVVM, и вы можете достаточно использовать угловую функцию для достижения того, чего хотите, вместо написания hide().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню