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 –
「要素」パネル上で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っぽい動作をするのでかえって混乱しました。
ディスカッション
コメント一覧
まだ、コメントがありません