В спецификации HTML5 нельзя давать какие угодно имена аттрибутам. Если это Ваши пользовательские аттрибуты, они должны начинаться с «
data-».
Выборку по элементам, содержащим аттрибуты, которые начинаются с «
data-shop» можно сделать так:
$('*').filter(function(){
for(var property in $(this).data()){
if(property.indexOf('shop') == 0){
return true;
}
}
return false;
})
Рабочий пример лежит
тут.
P. S.: Ну а перебрать все остальные аттрибуты внутри каждого найденного элемента не составит труда.