или получить в глаз ;)
|
:) Вариант, но не факт, что от этого перепишутся готовые либы ;)
|
Цитата:
Цитата:
или ТРИ. Выловить начало перекрытия стандартных методов и занести их в переменнные свои. Но это как говорится будет каша в коде и с каждым новым изменением сайт будет... короче сайтом должен заниматься Первый разработчик. |
Цитата:
Цитата:
Но ещё раз повторю, данная библиотечка к тому скрипту отношения не имеет, там весь код заточен под конкретную задачу. P.S. Коляй, кстати ))) |
Цитата:
П.С. к библитечке не имею притензий. |
Цитата:
|
function $$(selector, options) { ... var value = typeof options.map == 'function' ? options.map.call(options.scope, el, [B]j++[/B]) : el; ... reduceValue = reduceInitialized ? options.reduce.call(options.scope, reduceValue, value, [B]j++[/B]) : value; а это так и надо? UPD: и почему такой странное поведение с options.reduce: "Если параметр reduceInit не указан, то для первого найденного элемента reduce не вызывается." Можно какие-нибудь примеры использования? UPD 2: по поводу более важных замечаний... вынес в отдельную тему |
Цитата:
Цитата:
Цитата:
alert($$('input', { filter: function(el) { return el.type == 'text'; }, map: function(el) { return parseInt(el.value) || 0; }, reduce: function(sum, value) { return sum + value; } })); Читабельность данной функции меня самого не радует, но пока не придумал, как лучше переписать. |
Цитата:
alert($$('input', { filter: function(el) { return el.type == 'text'; }, reduce: function(sum, el) { return sum + parseInt(el.value) || 0; } })); может и реализация проще станет Цитата:
|
Цитата:
Цитата:
|
Цитата:
var reduceValue = options.reduceInit; for( var i=0, j=0; i<els.length; i++ ) { ... if( options.reduce ) reduceValue = options.reduce.call( options.scope, reduceValue, el, j ); и реализация стала проще. Можно добавить еще значение по умолчанию 0/пустая строка/whatever Цитата:
Ну и я не говорил, что нужно воспринимать тот код, как готовые решения. Можно, например, просто парсинг селекторов вынести |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Метод clone в http://alljs.ru/crossjs/source/lang/Array.js правильно работает только с одномерными массивами. Так и задумано?
var array1 = [[]]; var array2 = array1.slice(0); alert([ array1 === array2, array1[0] === array2[0] ]); |
Цитата:
|
В файле Element.js в функции M.removeClass используется регэксп:
new RegExp('($|\\s)' + cl + '(?=\\s|$)', 'g') Вероятно, в первой скобке вместо доллара должна быть крышка (^)? |
stopkran,
спасибо, поправил. Неприятный баг. |
А вот и небольшая критика M.addClass: http://ir2.ru/show-hide-toggle.aspx (там больше критики obj.style.display = "none", поэтому отдельная статья)
|
Про критику addClass понял, у меня получается лицемерно: при removeClass проверка на reflow есть, при addClass -- нет :)
|
лучше распарсить строку во множество, отредактировать и потом сериализовать
|
Следующий вопрос: почему нельзя просто проверять
obj instanceof Array (почему используете Object.prototype.toString.call(obj) == '[object Array]') ? |
Цитата:
|
Цитата:
Цитата:
|
лучше= расширяемей. когда потребуется сделать циклическую смену классов или по хешу или ещё как-нибудь - не придётся заново писать регулярки, генерировать их и париться с отладкой. а скорость тут не важна
|
на тему добавить удалить класс )))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style type="text/css"> .Green{ color: #FF0000; } .green{ background-color: #008000; } </style> </head> <body> <div class="Green" onclick="addclass(this,'green');addclass(this,'Green');addclass(this,'green');alert(this.className+' '+this.className.length);">12345</div> <script language="JavaScript" type="text/javascript"> function delclass(obj, c) { obj.className = obj.className.replace(RegExp('(\\s+|^)' + c + '(\\s+|$)', 'g'), " ").replace(/^\s+|\s+$/,'')} function addclass(obj, c) { delclass(obj, c); obj.className += " " + c} </script> </body> </html> |
рони,
а это о чём? |
Kolyaj,
о примере удаления добавления класса расположенного http://ir2.ru/show-hide-toggle.aspx наверно нужно было там и писать. основной момент это использование в проверке там флага i что приведёт к недобавлению скажем класса Green при наличии класса green. И ещё почему бы при добавлении класса не тестировать его наличие а просто удалять если он есть. ну и немного с пробелами чтоб они не копились replace(/^\s+|\s+$/, ''); |
Цитата:
|
Kolyaj, тогда такой момент - приоритет имеет последний добавленный класс и если я какой либо класс уже использовал, мне его наверно нужно перенести в конец чтоб он точно сработал, а не был затёрт другими классами.то есть я опять же должен в начале удалить а потом добавить или как?
|
Цитата:
<style> .red { color: red; } .green { color: green; } </style> <div class="green red">asldkfjalkdfjdasklfj akljsd flkajdflkajdf</div> Порядок классов не имеет значения. |
Kolyaj,
ок) |
http://github.com/Kolyaj/CrossJS/blo...rce/Element.js
.addClass() намеренно не проверяет существование класса у объекта? Там же. .addClass() и .removeClass () как-бы несимметричны: а) первая может вернуть как строковое значение, так и DOM-объект б) вторая всегда возвращает объект |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
/(\w+)/.test('++text++'); alert(RegExp.$1); |
циклическая мена:
foded -> snippet -> opened -> folded -> ... по хэшу: var stepMap= { home: 'contacts', contacts: 'home', support: 'home' } var nextStep= stepMap[ currentStep ] |
Часовой пояс GMT +3, время: 20:17. |