ホームページ >ウェブフロントエンド >jsチュートリアル >JQuery をネイティブ JS に置き換える 16 の方法の詳細な例

JQuery をネイティブ JS に置き換える 16 の方法の詳細な例

伊谢尔伦
伊谢尔伦オリジナル
2017-06-17 11:46:351842ブラウズ

一部の JQuery メソッドを置き換えるネイティブ JS のシンプルな実装を提供します。なかなか良い内容だと思うので、皆さんにもシェアして参考にさせていただきたいと思います。

1. 要素を選択します

// jQuery
var els = $('.el');

// Native
var els = document.querySelectorAll('.el');

// Shorthand
var $ = function (el) {
 return document.querySelectorAll(el);
}

querySelectorAll メソッドは、配列に変換する必要がある NodeList オブジェクトを返します。

myList = Array.prototype.slice.call(myNodeList)

2. 要素を作成する

// jQuery
var newEl = $(&#39;<p/>&#39;);

// Native
var newEl = document.createElement(&#39;p&#39;);

3. イベントを追加する

// jQuery
$(&#39;.el&#39;).on(&#39;event&#39;, function() {

});

// Native
[].forEach.call(document.querySelectorAll(&#39;.el&#39;), function (el) {
 el.addEventListener(&#39;event&#39;, function() {

 }, false);
});

4. スタイルを追加および削除するDOM要素自体が持つクラスの操作に使用できる、読み取りおよび書き込み可能な className 属性。

HTML 5 は、より強力な機能を備えた classList オブジェクトも提供します (IE 9 ではサポートされていません)。

// jQuery
$(&#39;.el&#39;).filter(&#39;:first&#39;).attr(&#39;key&#39;, &#39;value&#39;);
$(&#39;.el&#39;).filter(&#39;:first&#39;).attr(&#39;key&#39;);

// Native
document.querySelector(&#39;.el&#39;).setAttribute(&#39;key&#39;, &#39;value&#39;);
document.querySelector(&#39;.el&#39;).getAttribute(&#39;key&#39;);

6. 要素を追加します

要素を末尾に追加します:

// jQuery
$(&#39;.el&#39;).addClass(&#39;class&#39;);
$(&#39;.el&#39;).removeClass(&#39;class&#39;);
$(&#39;.el&#39;).toggleClass(&#39;class&#39;);

// Native
document.querySelector(&#39;.el&#39;).classList.add(&#39;class&#39;);
document.querySelector(&#39;.el&#39;).classList.remove(&#39;class&#39;);
document.querySelector(&#39;.el&#39;).classList.toggle(&#39;class&#39;);

要素を先頭に追加します:

// jQuery
$(&#39;.el&#39;).append($(&#39;<p/>&#39;));

// Native
document.querySelector(&#39;.el&#39;).appendChild(document.createElement(&#39;p&#39;));

7. 要素を複製します

//jQuery
$(‘.el&#39;).prepend(&#39;<p></p>&#39;)

//Native
var parent = document.querySelector(&#39;.el&#39;);
parent.insertBefore("<p></p>",parent.childNodes[0])

8. 要素を削除します

// jQuery
var clonedEl = $(&#39;.el&#39;).clone();

// Native
var clonedEl = document.querySelector(&#39;.el&#39;).cloneNode(true);

9. 親を取得するLevel要素

Remove
// jQuery
$(&#39;.el&#39;).remove();

// Native
remove(&#39;.el&#39;);

function remove(el) {
 var toRemove = document.querySelector(el);

 toRemove.parentNode.removeChild(toRemove);
}

10.前/次の要素(Prev/next要素)を取得

// jQuery
$(&#39;.el&#39;).parent();

// Native
document.querySelector(&#39;.el&#39;).parentNode;

11.子要素があるかどうか

// jQuery
$(&#39;.el&#39;).prev();
$(&#39;.el&#39;).next();

// Native
document.querySelector(&#39;.el&#39;).previousElementSibling;
document.querySelector(&#39;.el&#39;).nextElementSibling;

14.$(document).ready

DOM読み込みが完了すると、DOMContentLoaded イベントがトリガーされます。これは、jQuery の $(document).ready メソッドに相当します。

// jQuery
$.get(&#39;url&#39;, function (data) {

});
$.post(&#39;url&#39;, {data: data}, function (data) {

});

// Native

// get
var xhr = new XMLHttpRequest();

xhr.open(&#39;GET&#39;, url);
xhr.onreadystatechange = function (data) {

}
xhr.send();

// post
var xhr = new XMLHttpRequest()

xhr.open(&#39;POST&#39;, url);
xhr.onreadystatechange = function (data) {

}
xhr.send({data: data});

15. データストレージ

jQuery オブジェクトはデータを保存できます。

//jQuery
$("#elementID").empty()

//Native
var element = document.getElementById("elementID")
while(element.firstChild) element.removeChild(element.firstChild);
HTML 5 にはデータセット オブジェクトがあり、同様の機能があります (IE 10 はサポートしていません)が、保存できるのは

文字列

のみです。

//jQuery
if (!$("#elementID").is(":empty")){}

//Native
if (document.getElementById("elementID").hasChildNodes()){}

16.アニメーション

jQueryのanimateメソッドはアニメーション効果を生成するために使用されます。

document.addEventListener("DOMContentLoaded", function() {
  // ...
});
jQuery のアニメーション効果は主に DOM に基づいています。ただし、現在、CSS 3 アニメーションは DOM よりもはるかに強力であるため、CSS にアニメーション効果を記述し、DOM 要素のクラスを操作してアニメーションを表示できます。

$("body").data("foo", 52);

アニメーションに

コールバック関数

を使用する必要がある場合、CSS 3 は対応するイベントも定義します。 りー

以上がJQuery をネイティブ JS に置き換える 16 の方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。