Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
document.querySelector("#btn").className += "active"; то получим Цитата:
$("#btn").addClass("active"); почему мы не должны ждать такой же ошибки? а вот, когда работаем с коллекцией, то отсутствие ошибок вполне логично: var list = document.querySelectorAll(".btn"), i = list.length; while (i--) { … } или $(".btn").addClass("active") тут программист берет в расчет, что элементов в коллекции может и не быть, и никакие действия не выполнятся, что на чистом JS, что с помощью jQuery. Чтобы избежать этой проблемы, предлагаю не страдать фигней в погоне за совместимостью с jQuery, а сделать, как мне кажется, более удобно: function $(selector) { return new $Node(document.querySelector(selector)); } function $$(selector) { return new $NodeList(document.querySelectorAll(selector)); } function $Node(node) { this.node = node; } $Node.prototype = { addClass: …, … remove: …, … parent: …, … }; function $NodeList(list) { this.list = list; } $NodeList.prototype = { first: …, … last: …, … each: …, … }; никакого дублирования методов не нужно: $$("selector").each("method", arguments) и в коде будет наглядно: $(selector).remove(); $$(selector).each("remove") |
Цитата:
Цитата:
в случае с querySelector это лишь возврат функции которая может возвращать объекты разных типов(что в общем-то наверное не совсем правильно). когда мы работаем с выборкой, то хочется единого АПИ в независимости есть в выборке элементы или нет(в конце концов это просто состояние объекта) на практике позволяет в клиентском коде избегать ненужных if-в. ЗЫ про style сенкс. не догадывался что есть такая особенность. |
а вообще тс странный. и вступительная речь тоже.
мне например чтобы перевести своё детище на поддержку только "правильных" браузеров понадобиться ну час мб. jquery ну пускай день два. Лично мне видится её главным недостатком(ну по крайней мере сейчас, когда я не спал сколько там... 22 часа) - сверх универсальность. Под конкретные задачи можно сделать лучше. Иногода это критично. Посему к тсу - чтобы делать свой ворк/библиотеку нужен какой-то мотиватор, какая-то задача. Без этого быстро надоест. |
float, чем не задача сделать либу быстрее, чем jQuery, но с совместимостью кода?
|
В общем эта тема превращается в срач, один предлагает поддерживать старые версии ИЕ и критикует сообщения прочитав только половину, другой говорит, что нужно создать отдельные методы для одиночиых элементов, по сути отдельную библиотеку, третий обзывает меня странным, при этом сказав, что за пару часов перепишет jQuery, сделав то же самое что и я. Остальным спасибо за помощь. Если что-то будет готово, сообщу. В срачах учавствовать не буду. На всякий случай, по совету melky запилю на гитхаб после нормальной реализации метода animate.
|
Цитата:
пример: <style> div { width: 200px; height: 200px; } </style> <div id="owner"> <div id="child"></div> </div> <script> function yourStyle( elem, prop ) { return elem.style[prop] || elem.ownerDocument.defaultView.getComputedStyle( elem, null ).getPropertyValue( prop ); } function style( elem ) { if ( elem.ownerDocument && elem.ownerDocument.defaultView ) { return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); } else if ( elem.currentStyle ) { return elem.currentStyle; } return null; } var elem = document.getElementById('owner'); // проверяем твоей: alert( [ yourStyle( elem, 'width' ), yourStyle( elem, 'height' ) ] ); // проверяем моей: alert([ style( elem ).width , style( elem ).height ]); // меняем ширину у элементов: document.getElementById( 'owner' ).style.width = "auto"; document.getElementById( 'child' ).style.width = "300px"; // снова проверяем родителя: // проверяем твоей: alert( [ yourStyle( elem, 'width' ), yourStyle( elem, 'height' ) ] ); // проверяем моей: alert([ style( elem ).width , style( elem ).height ]); </script> |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 08:51. |