2016-03-20 20 views
2

私はOpencart(1.5.5.1)とJournalテーマの古いバージョンを使用しています。ドロップダウンメニューのmouseleaveで遅延を追加します

ドロップダウンメニューは、マウスを離したときにすぐに消えます。これは実際デスクトップ上の問題ではありませんが、タッチスクリーンデバイスでは問題を引き起こします。私はすぐにフェードアウトする前に数秒待つ必要があります。

この件に関するいくつかの類似の記事を読みましたが、解決策を自分のコードに適用するのが少し難しいと思います。私はmouseleaveが同じ方法で(おそらくない)タッチ画面に適用されるかどうかはわかりません。

誰でもデスクトップとモバイルの両方で機能する遅延を追加することで助けてください。ここで

はコードです:あなたは

setTimeout 機能を使用することができます

$('#cart > .heading a').die('click'); 
$('#cart').die('mouseleave').die('mouseover').die('mouseleave').die('click'); 
$('#cart').live('mouseover', function() { 
    if (!$("#cart").hasClass('active')) { 
     if (!Journal.isOC2) { 
      $('#cart').load('index.php?route=module/cart #cart > *'); 
     } 
     $('#cart').addClass('active'); 
     $('#cart').live('mouseleave', function() { 
      $(this).removeClass('active'); 
     }); 
    } 
}); 

答えて

0

あなたも、それはjQueryのフェードアウト()関数を用いて、第1フェードアウト作ることができます。

$(this).fadeOut(2000); 
setTimeout(function(){ 
    $(this).removeClass('active'); 
}, 2000); 
+0

おかげで、ikdekker! 私はあなたのソリューションを試しましたが、これは確かに何かをしますが、マウスを動かしてもどれくらい待ってもメニューが閉じなくなるので機能しないようです。 –

+0

タイムアウトが発生したのを確認しようとしましたか? (console.log()またはalert()を使用して)。ちなみに、私は最初に私の投稿で失敗し、誤って間違った順序でパラメータを入れました。あなたのコードは私の答えと同じですか?もしそうなら、$(this)要素は正しいものを対象としていますか? – ikdekker

+0

idを 'cart'としたクラスを 'アクティブ'にしたい要素が削除されていますか?そうでない場合は、$(this)を目的のクラスに置き換えてください。 – ikdekker

1

jQuery delay()の機能を使用できます。

「あなたはjQueryの機能を使用している場合にのみ、」しかし、あなたはそれが動作しませんremoveClass()機能を使って、クラスを削除するつもりなら。いくつかのアクションを遅らせるために、CSSでこれを行うことができます。

私はtransition-delayを使用します。私はこれが正確に、または少なくともあなたの目標に近づくことを望みます。ご返信用:)

`

$('#test').hover(function(){ 
 
    $('#dropdown').addClass('active'); 
 
}, function(){ 
 
    $('#dropdown').removeClass('active'); 
 
});
/* Change transition-delay 2s(2 seconds) to how long do you want to delay it. */ 
 
#dropdown.active{ 
 
    opacity: 1 !important; 
 
    -webkit-transition-property: opacity; /* Safari */ 
 
    -webkit-transition-delay: 0s; /* Safari */ 
 
    transition-property: opacity; 
 
    transition-delay: 0s; 
 
} 
 

 
#dropdown{ 
 
    opacity: 0; 
 
    -webkit-transition-property: opacity; /* Safari */ 
 
    -webkit-transition-delay: 2s; /* Safari */ 
 
    transition-property: opacity; 
 
    transition-delay: 2s; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="test"> 
 
    HOVER ME PLEASE! 
 
</div> 
 

 
<div id="dropdown"> 
 
    EXAMPLE DROPDOWN 
 
</div>

`

+0

ご返信ありがとうございます。 おそらく正しいかもしれませんが、これを動作させることはできません。何か不足していますか? –

+0

jqueryスクリプトを含めましたか?私はjqueryライブラリを意味します。 – rmondesilva

+0

はい、これはコンテンツ管理システム上で動作しているので、すべてのライブラリがすべてのページに含まれていることは間違いありません。実際、この乱雑なページには少なくとも8種類のjqueryライブラリが含まれています。 –

関連する問題