Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Тем не менее, как бы я не сочувствовал
и как я недавно твитнул
$elem.addClass('opened').find('button').click(function () { alert(123) })
Чтобы скачать современный браузер, необходимо иметь современный браузер.
var foo = "test_1"; // обычная переменная
let bar = "test_2"; // переменная понимающая блочную область видимости
const baz = "test_3"; // нормальная константа
Как бы то ни было, в большинстве случаев, разработчики и слыхом не слыхивали о подобных конвенциях, и в результате в их коде чрезвычайно трудно разобраться незнакомым с ним людям. Каждая попытка отредактировать такой код, влечет множество ошибок в стиле «Ох, блин, это не jQuery-объект, забыл обернуть его в $()» или «Черт, тут же не дом-элемент забыл взять его через $(..)[0]»
Также я не буду тратить время, рассуждая о размере файла и о том, насколько быстрее работают нативные методы.
node.addEventLictener('click', function (e) {
if (elementIsNot(someSelector)) { return };
// some js code
})
$node.on('click', someSelector, function (e) {
// some js code
});
$('#nonexistentId').remove();
var node = document.getElementById('nonexistentId');
node && node.remove();
if (elementIsNot(someSelector)) { return };
on('click', someSelector,
Считать игнорирование того что выборка пустая не самый хороший вариант.
var node = document.getElementById('nonexistentId'); node && node.remove();
var node = document.getElementById('nonexistentId');
node && node.parentNode.removeChild(node);
// vanilla
var newElement = document.getElementById('someId');
newElement && newElement.parentNode.insertBefore(newElement, referenceElement);
// jQuery
$(newElement).insertBefore(referenceElement);
// сюда же $.fn.prepend, который на vanilla будет куда монструознее.
Наверное, вам не нужен jQuery
Вам точно не нужен jQuery!
А нужен ли вам jQuery?
10 советов как писать на JavaScript без jQuery
Тем не менее, как бы я не сочувствовала этим бедным ребятам...
Определенно я далеко не первый, кто обращает внимание...А ещё у меня лапы болят и хвост отваливается…

$e = function(g){ //===создать или использовать имеющийся элемент===
//g={el|clone,blck,elA,cl|(clAdd,clRemove),ht,cs,at,atRemove,on,revent,ap,apT,prT,bef,aft,f+fA}
if(typeof g.el =='function') g.el = g.el.apply(g, g.elA);
if(!g.el && g.el !==undefined && g.el !='') return g.el; //null|0|false
var x, o = g.el = g.el || g.clone && typeof g.clone !='string' && g.clone.cloneNode(!0)
|| /\W/.test(g.clone) && (x = $q(g.clone, g.blck)) && x.cloneNode(!0) ||'DIV';
o = g.el = typeof o =='string'? /\W/.test(o) ? $q(o, g.blck) : document.createElement(o) : o;
if(o){ //выполнять, если существует el или clone
if(g.cl)
o.className = g.cl;
else{
if(g.clAdd)
o.classList.add(g.clAdd);
if(g.clRemove)
o.classList.remove(g.clRemove);}
if(g.cs)
$x(o.style, g.cs);
if(g.ht || g.at){
var at = g.at ||{}; if(g.ht) at.innerHTML = g.ht;}
if(at)
for(var i in at){
if(i=='innerHTML') o[i] = at[i];
else o.setAttribute(i, at[i]);}
if(g.atRemove)
for(var i in g.atRemove)
o.removeAttribute(g.atRemove[i]);
if(g.htT){ //подготовка шаблона
if(!(typeof g.htTA =='object')) g.htTA =[g.htTA];
for(var i in g.htTA)
g.htT = g.htT.replace(RegExp('\\{\\{'+ i +'\\}\\}','g'), g.htTA[i])
o.innerHTML = g.htT;}
if(g.on)
for(var i in g.on) if(g.on[i])
o.addEventListener(i, g.on[i],!1);
if(g.revent)
for(var i in g.revent) if(g.revent[i])
o.removeEventListener(i, g.revent[i],!1);
if(g.ap){ //добавление нод
if(g.ap instanceof Array){
for(var i in g.ap) if(g.ap[i] && i !='length')
o.appendChild(g.ap[i]);
}else o.appendChild(g.ap);}
g.apT && g.apT.appendChild(o);
g.prT && (g.prT.firstChild
? g.prT.insertBefore(o, g.prT.firstChild)
: g.prT.appendChild(o) );
g.bef && g.bef.parentNode.insertBefore(o, g.bef);
g.aft && (g.aft.nextSibling
? g.aft.parentNode.insertBefore(o, g.aft.nextSibling)
: g.aft.parentNode.appendChild(o) );
g.remove && g.remove.parentNode.removeChild(g.remove);
if(typeof g.f =='function')
g.f.apply(g, g.fA); //this - это g
}
return o;
}
,$q = function(q, f){ return (f||document).querySelector(q);}
,$qA = function(q, f){ return (f||document).querySelectorAll(q);}
var $x = function(el, h){if(h) for(var i in h) el[i] = h[i]; return el;}, //===extend===
var $ = document.querySelector.bind(document);
Element.prototype.on = Element.prototype.addEventListener;
// usage
$('#foo').on('click', function(){ ... });
jQuery считается вредным