Изучение PHP. Запись 3 (Знакомство с jQuery)

Сегодня продолжал изучать работу с выбранными наборами html-елементов.
Хочу отдельно остановиться на функциях, передаваемых в качестве аргументов в методы jQuery.
Насколько я могу понять, они могут как содержать аргументы так и не содержать их. Если такая функция содержит их, то первые два аргумента будут соответственно индексом текущего элемента (к которому применяется данная функция) и самим содержанием данного элемента:

$('div.dcell').map(function(index, elem) {
    return elem.getElementsByTagName("img")[0];
}).css("border", "thick solid red");
$('div.dcell').map(function(index, elem) { 
    return $(elem).children()[1];
}).css("border", "thick solid blue");

В данном коде аргументы index и elem и являются соответственно индексом и текущим элементом объекта jquery. Мне пока непонятно, относится ли это к функциям, применяемым во всех методах jquery или только к некоторым, как например к map(). (Буду благодарен, если знающие люди окончательно прояснят для меня ситуацию по данному вопросу).

Метод .map()

Кстати, метод .map() довольно удобен, поскольку действует похоже с .each() но возвращает сразу готовый объект jquery с набором искомых элементов, к которым можно применить любые другие действия, причем без необходимости прямого пропускания их через цикл или записи еще в какой-то объект или массив. Удобно.

Да! Заметил вот такой интересный селектор:

$('img').not('[src*=s]');

То-есть в качестве селектора может использоваться не только значение атрибута тега, но и его часть. В данном случае, [src*=s] - означает, что в качестве атрибута src в html теге может выступать любое значение, начинающееся с буквы s. Похоже на регулярные выражения. Интересно, какие еще варианты поддерживаются?

Еще одна мелочь, которой никогда раньше не придавал значения, это то, что условий выборки в объекте jQuery может быть несколько, не стоит об этом забывать:

$('img[src*=peony], img[src*=rose]');  

Функция add();

Еще одна не очевидная деталь, касающаяся функции add().
Эта функция (в которую, как и в большинство функций выборки, можно передавать как отдельный html-элемент так и их массив а также объект jQuery, содержащий html-элементы), добавляет к элементам целевого jQuery объекта элементы html содержащиеся в её аргументе. Но вот что интересно: если среди добавляющихся элементов будут уже присутствующие в объекте, дублирования не произойдет, то есть каждый элемент будет уникальным:

$('div.drow').add('div.dcell').find('img')
.each(function(index, elem) {
сconsole.log("Элемент: " + elem.tagName +
" " + elem.src); });

В данном коде элемент div.drow включает в себя элемент div.dcell. То есть, элементы выбранные и оттуда и оттуда при конкатенации обязаны дублироваться, но этого не происходит. Спасибо jQuery! :)