Chromeの開発者ツールのコンソールタブで`$`が使える(jQueryがインストールされていないのに)
はじめに
ChromeでjQueryを使用していないページを開デバッグしている時の話です。
開発者ツールの「コンソール」パネルを開きながら $
を入力すると、何やらオートコンプリート機能により候補がでてきます。
$("body")
と入力するとオブジェクトが取得できています。
ずっと不思議に思ってはいたのですが、調べてみました。
検証環境
Version 81.0.4044.138 (Official Build) (64-bit)
Chromeの開発者ツール独自の機能だった
Chromeの開発者ツール、特にコンソールページに関するドキュメントサイトにかかれていました。
上記のサイトを参考に $
に関わる機能を見ていきます。
$_
$_
は最後に評価された式の値を返却する変数です。
「コンソール」パネルに 2+2
と入力し、Enterキーを押しましょう。
式が 4 と評価されていることがわかります。
この直後に $_
と入力し、Enterキーを押しましょう。$_
入力直前の式の実行結果である 4 が表示されます。
2*3
と入力し、Enterキーを押しましょう。 6 と評価されます。$_
の評価結果は先程の 4 から 6 に変わっていることがわかります。
ただの数値に対して利用した場合には便利さがわかりませんが、例えば事前に配列を取得した結果、その長さを確認するといった場合に便利です。
$0 - $4
「要素」パネル上でDOM要素が選択できますが、このDOM要素の選択履歴を5つまでさかのぼって参照することができる変数です。
例えば、事前に「要素」パネルを開き、任意の要素を選択(クリック)します。
その後「コンソール」パネルを開き、 $0
変数を参照すると、先程クリックしたDOM要素のHTMLが格納されていることがわかります。
ちなみに、 $1
を参照すると <body>
要素が格納されています。僕が事前に <body>
要素をクリックしていたためにこのような結果となっています。
$0 - $4
に対して、プロパティの参照( ex$0.id
、 $0.style
)を行うこともできます。
$(selector, [startNode])
document.querySelector()
メソッドのエイリアスです。
セレクタで指定したDOM要素を検索し、 最初に見つかった要素だけを返却 します。
ここでは img
タグ要素を取得してみます。
注意しないといけないのは、jQueryの $
とは異なるという点です。
jQueryの $
はセレクタに該当する全てのDOM要素を返却しますが、こちらは 最初に見つかった要素 のみとなっています。
また、jQueryとは別物であり、 $("img").each(function () { console.log(this) }
のような記述はできません。
$$(selector, [startNode])
document.querySelectorAll()
メソッドのエイリアスです。
セレクタで指定したDOM要素を検索し、 見つかった全ての要素を返却 します。
img
タグ要素をすべて取得してみます。
取得できた要素に添え字を適用することもできます。
注意しないといけないのは、jQueryの $
とは異なるという点です。
jQueryの $
に似ていますが、こちらもやはりjQueryとは別物であり、 $("img").each(function () { console.log(this) }
のような記述はできません。
各要素に対して処理を実行したい場合には、 for of
構文を利用します。
// 全てのimgタグのsrc属性情報を出力
for (let img of $$("img")) {
console.log(img.src)
}
ひとこと
$
で下手にjQueryっぽい動作をするのでかえって混乱しました。
ディスカッション
コメント一覧
まだ、コメントがありません