jQueryノート-JQとJSとMUIの比較
4683 ワード
最近muiでページを書いていますが、もちろんモバイルアプリにjqやzeptoというフレームワークを導入するのは、極めて理性的ではないに違いありません.jqの成功はie 6、7、8、9、10、chrome、ffなどのブラウザが互換性がなく、開発者をクラッシュさせ、pc上のブラウザの性能がよく、プラットフォーム間の互換性も性能に影響を与えなかったからだ.しかし、jqは携帯電話のために設計されたものではありません.携帯電話にはwebkitブラウザ(wpを無視し、どうせmuiはwpをサポートしない)しかなく、jqというパッケージフレームワークでdomを操作する必要はありません.
要素の選択
親、兄弟要素
要素テキストの取得
要素の作成
Set/getプロパティ
アタッチメント
クローン作成
削除
ajax
表示と非表示
classを含めるかどうか
Classの追加
classの削除
HTMLの挿入
サブノードの取得
Trim全選コピーをメモに入れる
要素の選択
//jq
$('.el');
//js
document.querySelector("div");
div.querySelectorAll('.el');
//mui
mui(".el")[0];
親、兄弟要素
//jq
$('.el').parent();
$('.el').prev();
$('.el').next();
$('.el').last();
$('.el').first();
//js
document.querySelector('.el').parentNode;
document.querySelector('.el').previousElementSibling;
document.querySelector('.el').nextElementSibling;
document.querySelector(".el").lastElementChild;
document.querySelector(".el").children[0];
要素テキストの取得
//jq
$('.el').html();
$('.el').val();
$('.el').text();
$(el).replaceWith(string);
//js
document.getElementById('el').innerHTML;
document.getElementById('el').value;
document.getElementById('el').textContent
document.getElementById('el').outerHTML = string;
要素の作成
//jq
var newEl = $(' ');
//js
var newEl = document.createElement('div');
Set/getプロパティ
//jq
$('.el').filter(':first').attr('key', 'value');
$('.el').filter(':first').attr('key');
$('.el').addClass('class');
$('.el').removeClass('class');
$('.el').toggleClass('class');
$(el).css('border-width', '20px');
//js
document.querySelector('.el').setAttribute('key', 'value');
document.querySelector('.el').getAttribute('key');
document.querySelector('.el').classList.add('class');
document.querySelector('.el').classList.remove('class');
document.querySelector('.el').classList.toggle('class');
document.querySelector('.el').style.borderWidth = '20px';
アタッチメント
//jq
$('.el').append($(' '));
//js
document.querySelector('.el').appendChild(document.createElement('div'));
クローン作成
//jq
var clonedEl = $('.el').clone();
//js
var clonedEl = document.querySelector('.el').cloneNode(true);
削除
//jq
$('.el').remove();
// js
var toRemove = document.querySelector(el);
toRemove.parentNode.removeChild(toRemove);
ajax
//jq
$.get('url', function (data) {});
$.post('url', {data: data}, function (data) {});
//-----js-----
// js - get
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onreadystatechange = function (data) {}
xhr.send();
// js - post
var xhr = new XMLHttpRequest()
xhr.open('POST', url);
xhr.onreadystatechange = function (data) {}
xhr.send({data: data});
表示と非表示
//jq
$(el).show();
$(el).hide();
//js
el.style.display = '';
el.style.display = 'none';
classを含めるかどうか
//jq
$(el).hasClass(className);
//js
if (el.classList)
el.classList.contains(className);
else
new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);
Classの追加
//jq
$(el).addClass(className);
//js
if (el.classList)
el.classList.add(className);
else
el.className += ' ' + className;
classの削除
//jq
$(el).removeClass(className);
//js
// removeClass, takes two params: element and classname
function removeClass(el, cls) {
var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
el.className = el.className.replace(reg, " ").replace(/(^\s*)|(\s*$)/g,"");
}
// IE10+,Chrome,FireFox,Opera Safari , HTML5 classList ,
el.classList.add(className);
el.classList.remove("foo")
el.classList.contains("foo");
el.classList.toggle("active");
HTMLの挿入
//jq
$(el).before(htmlString);
$(parent).append(el);
$(el).after(htmlString);
//js
el.insertAdjacentHTML('beforebegin', htmlString);
parent.appendChild(el);
el.insertAdjacentHTML('afterend', htmlString);
サブノードの取得
//jq
$(el).children();
//js
el.children
Trim全選コピーをメモに入れる
//jq
$.trim(string);
//js
string.trim();