2017-10-11 3 views
2

マーキーがjQueryを使用してボタンをクリックしてスクロールしているかどうかを検出する方法はありますか?マーキーがスクロールしているかどうかを確認する方法

<marquee>Scrolling text here, moving constantly</marquee> 
 

 
<button id="btnCheck">Button</button>

私のjQueryのコードは次のようになります。

$(function(){ 

    var marquee = $("marquee")[0]; 

    $("#btnCheck").click(function(){ 
    // How to check if marquee is scrolling here 
    }); 
}); 
+0

それは言われる必要があります。 ''タグはHTML仕様には存在しません。それは現在のHTML5仕様書に記載されていますが、それは古いものとしてマーキングする目的のためだけにあります。私は詳細を忘れてしまった。 ''は使用しないでください。 – Rob

答えて

3

あなたはmarqueepを追加し、そのleft位置を確認することができます。それが変更された場合、その後、あなたのmarqueeは、このスニペットのように、それ以外の場合は、そうではありません、スクロールしている:

$(function() { 
 
    $("#btnCheck").click(function() { 
 
     var initialLeft = $('marquee > p').position().left; 
 
     setTimeout(function() { 
 
      var currentLeft = $('marquee > p').position().left; 
 

 
      if (initialLeft !== currentLeft) { 
 
       alert("Marquee is scrolling!"); 
 
      }else{ 
 
       alert("Marquee is not scrolling"); 
 
      } 
 
     }, 100); 
 
    }); 
 
});
p { 
 
    margin: 0 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<marquee loop="1"><p>Scrolling text here, moving constantly</p></marquee> 
 
<button id="btnCheck">Button</button>


P/S:

これを( HTML <marquee>)機能は廃止されました。一部のブラウザではまだ動作するかもしれませんが、いつでも削除することができるため、 の使用はお勧めしません。 を使用しないでください。

は参照してください:developer.mozilla.org

+0

私はマーキーを開始および停止する他のボタンを持っています。私はそれを統合しようとしましたが、initialLeftとcurrentLeftは何度も等しいので、スクロールが止まっても常にスクロールとして警告します。私は間違っていましたか? –

+0

あなたのマーキーの速度がデフォルトよりも遅い場合は、 'setTimeout'のタイムアウト時間が足りません。'}、100)の部分でそれをもっと大きな値に増やしてみてください。 –

関連する問題