Разбор данных XFN с помощью Jquery

Я пытаюсь отфильтровать метаданные отношений XFN, найденные на веб-страницах. Это что-то вроде этого:

<a href="site" rel="friend colleague" >Name</a>

в REL вы можете иметь различные значения, такие как "друг", "коллега", но даже "я" и "встретился", потому что вы можете иметь несколько значений, я сделал это:

xfn_me = $("a[rel*=me]").length; 

Но это не работает, потому что "я" и "встретил" совпадают! Есть ли способ точно отфильтровать значения, даже если есть несколько значений?

Спасибо.

Обратите внимание, что у меня нет контроля над страницей, на самом деле я работаю над расширением Chrome, и этот код должен работать на любой веб-странице.

3 ответа

Решение

Вы могли бы использовать [attribute~=value] селектор. Он выбирает на основе значений, разделенных пробелами, точно так же, как работают классы xfn и CSS, т.е. [class~=className] точно так же, как .className,

xfn_me = $("a[rel~=me]").length;

Я не смог найти его в документации по jQuery, но он работает как минимум в 1.3.

Поскольку вы используете jQuery, вы можете сделать это следующим образом:

$('a[rel*=me]').filter(function(){ 
   return $.inArray('me', $(this).attr('rel').split(' ')) > -1;
}).length;

Это в основном находит все a элементы, которые могут быть совпадением, затем фильтрует их, разделяя тег rel в массив и проверяя фактическое совпадение.

Изменить: я обновил свой код из !$.inArray в $.inArray > -1 найденный @UVL.

Решение (по крайней мере, до jquery 1.2) таково:

xfn_me = $('a[rel*=me]').filter(function(){ 
 return $.inArray('me', $(this).attr('rel').split(' ')) > -1;
}).length;

Ставит в xfn_me номер A теги с rel соответствие "я", даже если используются несколько значений rel.

Другие вопросы по тегам