или получить в глаз ;)
|
:) Вариант, но не факт, что от этого перепишутся готовые либы ;)
|
Цитата:
Цитата:
или ТРИ. Выловить начало перекрытия стандартных методов и занести их в переменнные свои. Но это как говорится будет каша в коде и с каждым новым изменением сайт будет... короче сайтом должен заниматься Первый разработчик. |
Цитата:
Цитата:
Но ещё раз повторю, данная библиотечка к тому скрипту отношения не имеет, там весь код заточен под конкретную задачу. 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, время: 19:28. |