2016-10-25 11 views
1

他のスレッドをチェックしましたが、コードに対応する応答が見つからないようです。私の問題は、その時、それは完璧に動作指し、二クリックで唯一の火災の私のクリックイベントである(第2クリックで開き、第三のクリックで閉じ、第四が開き、等...)jQueryは2回目のクリックでは発生しますが、最初には発生しません。

$('.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); 
    }); 

編集:ここに私の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

あなたは正しいと思います。最初にクリックすると '-325px'に' right'がセットされます。私はこの時点で少しリストです。 how/what/where私はデータクリックをどこに設定するのですか? – VCP

+0

hrefにonclick属性を入れて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-btn'ではなく' expand-button')を指していたようです。最近のコードスニペットを使用した例も追加しました。 –

+0

ええ、私はまだ追加しましたが、まだ何も追加していません。私はちょうど私のコードで値を変更すると(最初のブロックは '-325px'を取得し、2番目は' 0'を取得する)一時的な解決策を見つけました。 – VCP

関連する問題