質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

2747閲覧

Jqueryでのイベント重複について

hiroshi3324

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/12/21 01:53

現在、コンテンツを作成していてわからないところが出て来たので教えて欲しいと思い質問させてもらいました。
ここのサイトのソースコードをもとに自分で勉強していて、ここで書かれているのをjqueryに変更してるのですが、コンテンツがスクロールしません。
デベロッパーツールで確認してみると、このようにマウスをクリックしてスクロールすると重複していることがわかりました。
このように
そこでjqueryでのイベントでの重複処理のことを調べたら.onではなくて.addEventListenerこっちを使うという記事を見たのですが、jqueryでは出来ないのでしょうか?教えて欲しいです。

javascript

1$(funciton() 2{ 3 const slider = $('.items'); 4 let isDown = false; 5 let startX; 6 let scrollLeft; 7 8 slider.on( 9 { 10 'mousedown': function(e) 11 { 12 isDown = true; 13 slider.addClass('active'); 14 startX = e.pageX - slider.offsetLeft; 15 scrollLeft = slider.scrollLeft; 16 }, 17 'mouseleave': function() 18 { 19 isDown = false; 20 slider.removeClass('active'); 21 }, 22 'mouseup': function() 23 { 24 isDown = false; 25 slider.removeClass('active'); 26 }, 27 'mousemove': function(e) 28 { 29 if(!isDown) 30 { 31 return; 32 } 33 e.preventDefault(); 34 const x = e.pageX - slider.offsetLeft; 35 const walk = (x - startX) * 3; //scroll-fast 36 slider.scrollLeft = scrollLeft - walk; 37 console.log(slider.scrollLeft); 38 } 39 }); 40});

html

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8" /> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <title>Page Title</title> 7 <meta name="viewport" content="width=device-width, initial-scale=1"> 8 <link rel="stylesheet" type="text/css" media="screen" href="main.css" /> 9 <script src="main.js"></script> 10</head> 11<body> 12 <!-- horizontal scrollここから --> 13<main class="grid-item main"> 14 <div class="items"> 15 <div class="item item1"></div> 16 <div class="item item2"></div> 17 <div class="item item3"></div> 18 <div class="item item4"></div> 19 <div class="item item5"></div> 20 <div class="item item6"></div> 21 <div class="item item7"></div> 22 <div class="item item8"></div> 23 <div class="item item9"></div> 24 <div class="item item10"></div> 25 </div> 26 <p>????????Click & Drag <i>powered by Javascript</i></p> 27 </main> 28 <!--horizontal scrollここまで --> 29</body> 30</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

全体的に何をしたいかわかりません
とりあえず以下は直したほうがよいかと

$(funciton()

$(function()

slider.offsetLeft;

slider.offset().left;

scrollLeft = slider.scrollLeft;

??メソッドを拾ってる?

投稿2018/12/21 02:12

編集2018/12/21 02:13
yambejp

総合スコア114777

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroshi3324

2018/12/21 06:59

$(function()のところは記載ミスで、直しました。 具体的にはマウスでクリックしたままで移動するとitemのところがスクロールするというものを作成しようと思っています。 以下修正しましたが、うまく動きません。 $(function(){ const slider = $('.items'); let isDown = false; let startX; slider.on( { 'mousedown': function(e) { isDown = true; slider.addClass('active'); startX = e.pageX - slider.offset().left; }, 'mouseleave': function() { isDown = false; slider.removeClass('active'); }, 'mouseup': function() { isDown = false; slider.removeClass('active'); }, 'mousemove': function(e) { if(!isDown) { return; } e.preventDefault(); const x = e.pageX - slider.offset().left; const walk = (x - startX) * 3; slider.startX = startX - walk; console.log(slider); } }); });
guest

0

jQueryなら、mousemoveでスクロールさせる部分はscrollLeft(distance)でできると思います。

JavaScript

1$(function(){ 2 let isDown = false; 3 let startX; 4 let scrollLeft; 5 6 $('.items').on('mousedown', function(e) { 7 isDown = true; 8 $(this).addClass('active'); 9 startX = e.pageX - $(this).offset().left; 10 scrollLeft = $(this).scrollLeft(); 11 }).on('mouseleave, mouseup', function() { 12 isDown = false; 13 $(this).removeClass('active'); 14 }).on('mousemove', function(e) { 15 if(!isDown) return; 16 e.preventDefault(); 17 const x = e.pageX - $(this).offset().left; 18 const walk = (x - startX) * 3; //scroll-fast 19 $(this).scrollLeft(scrollLeft - walk); 20 console.log(walk); 21 }) 22}) 23

投稿2018/12/21 08:09

編集2018/12/21 08:09
mks

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問