Как отслеживать, а затем скрывать или показывать при определенных условиях элементы

204
13 июля 2017, 02:36

Имеется страница, на которой находится n-ое кол-во tabs(вкладок), на каждой вкладке есть автоматически создаваемый элемент в виде кнопки "Удалить" и ссылки на загруженный ранее файл, рядом кнопка input[type="file"], они в одном блоке. Вложенность везде большая, id у всех элементов формируются автоматом и все разные. Как отследить каждый блок, скрыть инпуты если есть кнопка удалить и показать, если кнопка отсутствует? Примерный код блока с кнопками:

$('.fabrikSubElementContainer').each(function(i,elem){ 
    if($(this).is('span[class="fabrikUploadDelete"]')){ 
      $(this).find('label').hide(); 
      $(this).find('span[class="fileInputText"]').hide(); 
    }else{ 
      $(this).find('label').show(); 
      $(this).find('span[class="fileInputText"]').show(); 
    } 
});
<div class="fabrikSubElementContainer"> 
	<span class="fabrikUploadDelete" id="doc_scan_0_delete_span"> 
		<button class="btn button" data-file="/docs/.../NNkPdG0NFR.pdf" data-join-pk-val="4">Удалить</button>  
		<a class="download-archive fabrik-filetype-pdf" title="NNkPdG0NFR.pdf" href="http://.../NNkPdG0NFR.pdf">NNkPdG0NFR.pdf</a> 
	</span> 
	<br> 
	<label for="doc_scan_0" class="btn btn-primary" style="cursor: pointer; padding: 0px 7px; border-radius: 0px;">Выберите документ</label> 
	<input class="fabrikinput" style="opacity: 0; z-index: -1; display: none; " name="doc_scan[0]" type="file" accept=".pdf" id="doc_scan_0"> 
	<span style="padding-left: 10px" class="fileInputText">Документ не выбран</span> 
</div>

Answer 1

Уже сам разобрался.

$('.fabrikSubElementContainer').each(function(i,elem){ 
  if($(this).find('span[class="fabrikUploadDelete"]').length ){ 
    $(this).find('label').hide(); 
    $(this).find('span[class="fileInputText"]').hide(); 
  }else{ 
    $(this).find('label').show(); 
    $(this).find('span[class="fileInputText"]').show(); 
  } 
});

READ ALSO
Многоуровнёвое меню в массиве

Многоуровнёвое меню в массиве

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

276
Воспроизведение HTML5 видео на Android

Воспроизведение HTML5 видео на Android

На Chrome для Android не воспроизводится автоматическиПодскажите, пожалуйста, как исправить?

271
JavaScript для формы

JavaScript для формы

Есть форма:

181