Разбор данных XFN с помощью Jquery - PullRequest
0 голосов
/ 17 ноября 2009

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

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

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

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

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

Спасибо.

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

Ответы [ 3 ]

0 голосов
/ 18 ноября 2009

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

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

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

0 голосов
/ 18 ноября 2009

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

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

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

0 голосов
/ 17 ноября 2009

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

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

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

Редактировать: Я обновил свой код с !$.inArray до $.inArray > -1, найденный @ UVL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...