Это ошибка в jQuery .
У вас есть два варианта:
- Избавьтесь от
:
и используйте «нестандартные» атрибуты (честно, это не имеет большого значения)
- Получите больше подробностей или используйте плагин для получения функциональности в любом случае:
Первоначально вам, возможно, придется сделать следующее:
$('div').filter(function() {
return $(this).attr('user:name') !== undefined;
}).whateverElse();
По скорости это должно быть довольно близко к селектору []
jQuery, так как это то, что он делает внутри библиотеки в любом случае. Конечно, каждый раз нужно набирать больше текста, когда вы хотите найти элемент с атрибутом, поэтому вы можете написать для него плагин, поскольку jQuery - это круто и позволяет вам делать такие вещи:
$.fn.hasattr = function(attr) {
return this.filter(function() {
return $(this).attr(attr) !== undefined;
});
};
Что позволит вам сделать намного проще:
$('div').hasattr('user:name').whateverElse();
Или, если вы хотите проверить, равен ли атрибут чему-либо, плагин может быть:
$.fn.cmpattr = function(attr, value) {
return this.filter(function() {
return $(this).attr(attr) == value;
});
};
И тогда вы могли бы сделать:
$('div').cmpattr('user:name', 'Ropstah').whateverElse();