jquery でレスポンシブなメニューを勉強しています。
下記のURLを参考に作ってみたのですが、この場合のjqueryって(HTML要素の)表示の切り替えをしているのですよね?
簡単ではないでしょうが手作業で ライブラリ を使わずできますか?
またどのようにすればよいでしょうか?
https://rico-notes.com/programming/html/header-r …
No.2ベストアンサー
- 回答日時:
一般的に、jqueryをvanilla js(ライブラリを使わない、素のJavaScript)に置き換える方法は、このページが役に立ちます。
参考:https://qiita.com/nightyknite/items/668c112c4093 …
$(function() {
const hum = $('#hamburger, .close')
const nav = $('.sp-nav')
hum.on('click', function(){
nav.toggleClass('toggle');
});
});
これを書き換えるなら、
$(function() { });
は、
document.addEventListener("DOMContentLoaded", function(){ });
に置き換えられます。
$('#とか.で始まるセレクター')
は、
document.querySelector('セレクター')
に置き換えられます。
※ただし、今回の#hamburger, .closeは2つあるので、よく分かりませんでした。変数が増えるのは嫌ですが、hamとcloの2つにしました。
.on
は、
.addEventListener
に置き換えられます。
.toggleClass
は、
.classList.toggle
に置き換えられます。
結果、こうなりました。
document.addEventListener("DOMContentLoaded", function () {
const hum = document.querySelector('#hamburger');
const clo = document.querySelector('.close');
const nav = document.querySelector('.sp-nav');
hum.addEventListener('click', function () {
nav.classList.toggle('toggle');
},false);
clo.addEventListener('click', function () {
nav.classList.toggle('toggle');
},false);
});
No1さんのようなエレガントさはありませんが、多少意味が分かりやすくなっているのではないかと思います。
No.1
- 回答日時:
こんばんは
>この場合のjqueryって(HTML要素の)表示の切り替えをしているのですよね?
ざっとしか見ていませんが、「.sp-nav」の要素にクラスを付けたり外したりしているだけです。
ですので、これだけのためにわざわざjQueryを利用するのも…って程度かな。
>ライブラリ を使わずできますか?
記述は少しだけ長くなりますが、jQueryを読み込むことを考えれば遥かに短くなります。
元の仕組みがちょっと面倒な仕組みになっていますけれど、とりあえずそのままにするなら・・・
window.addEventListener('DOMContentLoaded', e => {
const EL = s => document.querySelector(s);
[ EL('#hamburger'), EL('.close') ].forEach( elm => {
elm.addEventListener('click', e => {
EL('.sp-nav').classList.toggle('toggle');
});
});
});
※ bodyの閉じタグの前に記述するようにすれば、外側の1行ずつは不要です。
…ってか、CSS3なら、スクリプトなど使わなくても同様のことは実現可能でしょう。
非表示のチェックボックスを用意しておいて、クリック対象要素をこのチェックボックスのlabel要素にしておくと、クリックすることでチェック状態がトグルになります。
表示制御のCSS側では、クラスの有無ではなく、チェックの有無で検出して表示状態を変えるようにすれば、スクリプトなしでも同じことが実現できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryローディングアニメーションのコードの以下のURL内参考サイトで提示されている 3 2023/07/03 18:29
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript スマホ上で、左右スワイプで次のページに移動させたいです 2 2022/11/11 17:04
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリッカブルマップのリンク部...
-
DOM要素を削除しても、イベント...
-
FireFoxのjavascriptで自動でキ...
-
TexでΣの添え字の位置直し
-
投稿画像の確認画面
-
Latexに関する質問です。
-
javascriptのdocument.allにつ...
-
乗換案内 VBAで操作したい
-
スタイルの取得
-
フラグに名前を付けるには?
-
同じIDで定義した要素の配列を...
-
<a>タグのテキストを取得
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
C#テキストボックスの文字を配...
-
window.openでタイトル名の指定
-
ActiveXobjectが作成できない
-
functionから別のfunctionを実...
-
JAVAスクリプトで指定時間以降...
-
undefinedを表示させない方法は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FireFoxのjavascriptで自動でキ...
-
Latexに関する質問です。
-
DOM要素を削除しても、イベント...
-
XMLでのAttributeを持ったNode...
-
TexでΣの添え字の位置直し
-
JavaScript window.openで開く...
-
Null またはオブジェクトではあ...
-
javascriptの基本的なことだと...
-
iframeのソースを取得したい
-
選択肢によってラジオボタンを...
-
excle VBA とweb上の検索を利用...
-
文字を一文字ずつ表示
-
ラジオボタンでreadonlyの切替え
-
responseTextについて
-
VBAのIE操作でframe構造のサイ...
-
サブウィンドウからのスタイル...
-
JavaScriptのdocument.all("変...
-
オンマウスについて
-
要素のリサイズをひろい、他の...
-
クリッカブルマップのリンク部...
おすすめ情報