2016-10-25 3 views
1

Я проверил некоторые другие потоки, но не могу найти ответ, который идет с моим кодом. Моя проблема заключается в моем щелчке событие срабатывает только на втором клике, в какой момент он работает отлично (второй щелчок открывает, третий щелчок закрывается, четвёртые открывается, и т.д ...)jQuery нажмите на огонь при втором щелчке, но не первый

$('.expand-btn').click(function() { 
     var clicks = $(this).data('clicks'); 
     if (clicks) { 
     $('.expand-wrapper').animate({ 
      right: "0" 
     }, 500, function() { 

     }); 
     } else { 
     $('.expand-wrapper').animate({ 
      right: "-325px" 
     }, 500, function() { 

     }); 
     } 
     $(this).data('clicks', !clicks); 
    }); 

EDIT: Вот мой HTML код , Он работает как this jquery plugin, где .expand-wrapper - это контактная форма, которая скрыта от экрана, и .expand-btn - это маленький лоскут, который находится сбоку от экрана и доступен для просмотра.

<div class="expand-wrapper"> 
    <a href="#" class="expand-btn"><i class="fa fa-envelope-o" aria-hidden="true"></i> Contact</a> 
    <div class="expand-form"> 
     <?php echo do_shortcode('[contact-form-7 id="2173" title="Home 01 Request_no_title"]'); ?> 
    </div> 
</div> 
+1

ли вам есть ли начальное значение для вашего атрибута 'data-clicks'? Если нет, вы можете рассмотреть возможность установки одного из них, поскольку кажется, что он не устанавливается до тех пор, пока в первый раз он не будет нажат с атрибутом '$ (this) .data ('clicks')'. –

+0

Хорошо, я прав. Когда я нажимаю сначала, он устанавливает 'right' в' -325px'. На данный момент я маленький список; как/что/где я бы установил клики данных? – VCP

+0

Почему вы не кладете атрибут onclick на href и не удаляете href, просто используйте простой тег привязки – Araz

ответ

0

Это звучит как вопрос, где ваш атрибут data-clicks не инициализирован на вашем элементе (как вы устанавливаете его в конце своего первого щелчка, а затем он, кажется, работает, как ожидалось).

Попробуйте инициализировать его на .expand-btn элемента следующим образом:

<a href="#" class="expand-btn" data-clicks='false'>...</a> 

Или, если у вас есть несколько расширить кнопки элементы, вы можете инициализировать их, когда ваша страница загружается с помощью JQuery:

$(function(){ 
    $('.expand-btn').data('clicks',false); 
}); 
+0

Я добавил, но это не сработало. Я обновил свой код и добавил свой HTML. Возможно, я сделал это иначе, чем вы сделали. – VCP

+0

По-видимому, мой первоначальный ответ указывал на неправильный элемент (т. Е. 'Expand-button' в отличие от' expand-btn'). Я также добавил пример, используя ваш недавний фрагмент кода, который должен помочь. –

+0

Хмм, я добавил, но все равно ничего. Я просто вычислил временное решение, что, если я изменю значения в моем коде (первый блок получит '-325px', второй -' 0'), он отлично работает. – VCP

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