Я бы вообще так не делал — вы вводите кастомную логику поверх «стандартных» селекторов jQuery, наполняя ваш код неимовреными рисками. Как в этом всем будет разбираться следующий/новый разработчик? Что будете делать вы, если в Sizzle что-то изменят/добавят, и оно все у вас поломает?
Но все, наверное, зависит от задач.
Если вам нужно выбрать определенные атрибуты коллекции элементов — напишите обертку, что-то типа
function collectAttributes(collection, attribute){
// тут собираете запрашиваемые атрибуты и возвращаете новую коллекцию
}
и просто натравливаете эту функцию где нужно. Тоже самое касательно остальных селекторов. Если вам нужно
$('div.listItem').find('table tr td:eq(0)').each(function (){
var return = $(this).contents().eq(0).text();
});
то так и пишите, а не ужас из
div.listItem|table tr td:eq(0)~contents().eq(0).text()
.
P.S. Рекомендую также использовать each2, вместо each — довольно
сильно влияет на производительность.
$.fn.extend({
/*
* 4-10 times faster .each replacement
*/
each2 : function (c) {
var j = $([0]), i = -1, l = this.length;
while (
++i < l
&& (j.context = j[0] = this[i])
&& c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object
);
return this;
}
});