Разбор данных 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.