Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите с add remove class (https://javascript.ru/forum/dom-window/65864-pomogite-s-add-remove-class.html)

Sav2907 11.11.2016 17:36

Помогите с add remove class
 
Есть таблица, по клику на строке, открывается дополнительная инфо, при повторном клике закрывается инфо. Работает, если кликать медленно, а если быстро кликнуть два или несколько раз, открывается много инфо. Как это устранить?
<script>
		$(document).ready(function() {							
			// Details
			$('.parent').on('click', function(){
				parent = $(this);
				if (parent.hasClass('active')) {
					parent.next().remove();					
					parent.removeClass('active');										
				} else {					
					$.ajax({
						url: './lm_ld.php',
						data: {
							login: parent.data('login'),
							datestart: '<?php echo $datestart; ?>',
							dateend: '<?php echo $dateend; ?>',
							shift: '<?php echo $shift; ?>',
							date: parent.data('date'),
							shift: '<?php echo $shift; ?>'
						}
					}).done(function(response) {							
						$('<tr class="details"><td colspan="6">' + response + '</td></tr>').insertAfter(parent);
						parent.addClass('active');											
					});
				}
			});
		});
</script>





рони 11.11.2016 17:45

Цитата:

Сообщение от Sav2907
Как это устранить?

не удалять запрошенную информацию и не запрашивать дважды

рони 11.11.2016 18:09

Sav2907,
как-то так ...
$(function() {

      // Details
      $('.parent').on('click', function(){
        var parent = $(this), next = parent.next('.details'), ok = parent.data('ok');
        if(next.length){
        next.toggle();
        parent.toggleClass('active')
        }
        else if(!ok){
          $.ajax({
            url: './lm_ld.php',
            data: {
              login: parent.data('login'),
              datestart: '<?php echo $datestart; ?>',
              dateend: '<?php echo $dateend; ?>',
              shift: '<?php echo $shift; ?>',
              date: parent.data('date'),
              shift: '<?php echo $shift; ?>'
            }
          }).done(function(response) {
            var ok = parent.data('ok');
            if(!ok){
            $('<tr class="details"><td colspan="6">' + response + '</td></tr>').insertAfter(parent);
            parent.addClass('active');
            parent.data('ok',true);
            }

          });
        }
      });


});

Sav2907 11.11.2016 19:00

рони,
Спасибо, проверить не могу, код на работе. В понедельник проверю

Sav2907 14.11.2016 09:14

рони,
Спасибо большое, работает

Sav2907 15.11.2016 13:59

Еще одно, по клику на красный крестик (<a href="del.php?id='.$row['id'].'">), отправляется $ _POST и запись удаляется. После этого, нужно чтобы с таблички запись исчеза без обновления страницы.


рони 15.11.2016 14:07

Sav2907,
не понимаю

Sav2907 15.11.2016 14:13

Например кликаю по крестику записи №7, с базы запись удаляется. С таблички она тоже исчезнет после обновления страницы, а нужно обновить саму табличку а не страницу

Sav2907 15.11.2016 15:30

Короче говоря, нужно этот кусок прикрутить к крестикам.
.done(function(response) {
            var ok = parent.data('ok');
            if(!ok){
            $('<tr class="details"><td colspan="6">' + response + '</td></tr>').insertAfter(parent);
            parent.addClass('active');
            parent.data('ok',true);
            }
 
          });

рони 15.11.2016 15:33

Sav2907,
где код для креста?


Часовой пояс GMT +3, время: 20:49.