Как на jquery найти все ссылки

I need to get all the links in the page using .each(function(){}); in JQuery

<div id="mm">
    <ul class="mg">
        <li id="nav_sports">
            <a href="http://www.google.com" class="atest">Sports</a>
            <div id="sports">
                <ul>
                    <li>
                        <a href="http://www.dictionay.com">cricket</a>
                    </li>
                </ul>
                <ul id="cont1">
                    <li style="color:#444444">
                        <b>Popular</b>
                    </li>
                </ul>
            </div>
        </li>
    </ul>
</div>

Kjuly's user avatar

Kjuly

34.3k22 gold badges103 silver badges118 bronze badges

asked Oct 3, 2012 at 5:44

Debjeet Das's user avatar

0

$("a").each(function() {
    //Do your work   
})

answered Oct 3, 2012 at 5:47

Eli's user avatar

EliEli

14.7k5 gold badges58 silver badges77 bronze badges

Use the anchor tag as selector

$("a").each(....)

answered Oct 3, 2012 at 5:46

bart s's user avatar

bart sbart s

5,0581 gold badge34 silver badges55 bronze badges

0

var links = [];
$('#mm a').each(function() {
   links.push( this.href ); 
   // output of links: ['http://www.google.com', 'http://www.dictionay.com']
   // According to comment
   // if you need each link separately then
   // may try like

   var href = this.href;
   // now process with the href as you wish      
});

for all as, change the selector #mm a to just a;

answered Oct 3, 2012 at 5:47

thecodeparadox's user avatar

thecodeparadoxthecodeparadox

86k21 gold badges138 silver badges164 bronze badges

0

this is what i expected guys…thanks for ur replies

$("a").attr("clink","");
    $(window).load(function(){
        $("#mm a").attr("clink","");
        $('#mm a').each(function(){
            var hrefl=$(this).attr('href');
            var clink=hrefl;
            $(this).attr('clink',clink);
            $(this).attr('href',"#");
        }); 
});

answered Oct 3, 2012 at 15:34

Debjeet Das's user avatar

Debjeet DasDebjeet Das

1511 gold badge3 silver badges12 bronze badges

If you want all the unique links on a page, borrowing from other answers on this page and Unique values in an array

function onlyUnique(value, index, self)
{
    return self.indexOf(value) === index;
} 

function getAllLinks()
{
   var links = [];
   $("a").each(function ()
   {
      links.push(this.href);
   });

   return links.filter(onlyUnique);
}

Community's user avatar

answered Mar 5, 2016 at 15:47

Aaron Sherman's user avatar

Aaron ShermanAaron Sherman

3,7791 gold badge29 silver badges33 bronze badges

You can just do $('a') this will return a collection of al the A elements on a page.

Then you can iterate over it with $('a').each(function(index, value){})

answered Oct 3, 2012 at 5:47

Preben Huybrechts's user avatar

Цель: найти все ссылки в заданном div, которые указывают на текущую страницу.

Написал вот такой селектор

$('div#top_menu a[href=&quot;' + document.URL + '&quot;]')

но он ничего не находит, т.к. ссылки в div относительные (/>),

а document.URL является абсолютной ссылкой (localhost/account/page.aspx).

Вот такой запрос выдает необходимую абсолютную ссылку:

$('div#top_menu a[href=&quot;page.aspx&quot;]')[0].href

но как мне по этому свойству сделать запрос?


  • Вопрос задан

    более трёх лет назад

  • 7694 просмотра

Отфильтруйте через each:
$(‘div#top_menu a’).each(function(){
if (this.href=’xxxxxxxx’) { %do_something% }
});

Пригласить эксперта

Всем большое спасибо, мне более всего решение хабраюзера

, вот такая переделка его решения мне подошла:

$(document).ready(function () {
	$('div#top_menu a').each(function(){
		if (this.href == document.URL) {
			$(this).addClass('b-menu_current');
		}
	});
});

PS: jquery 1.4.1

Возможно нужно брать последний кусок урлы просто?

$('div#top_menu a[href="' + document.URL.substring(document.URL.lastIndexOf("/")+1,document.URL.length) + '"]')

А в вашем случае (c [0]) вы берете объект js, а не jquery и смотрите у него свойство href (по которому вы и сделали выборку)


$(function(){
   var path = location.pathname.substring(1);
   if ( path )
     $('div#topmenu a[href$="' + path + '"]').attr('class', 'selected');
 });

document.location.pathname вам в помощь

Решать нужно в обратном порядке. Т.е. взять все ссыли внутри заданного div’a и отфильтровать их по href таким образом что текущая ссылка является окончанием для document.URL, здесь даже jQuery не нужен

var links = document.getElementById('myDiv').getElementsByTagName('a'),
      result = [], $result;
for(var i = links.length - 1, j = 0; i > -1; i--) {
    if( document.URL.indexOf(links[i].href) + links[i].href.length != document.URL.length ) { continue; }
    result[j++] = links[i];
    $result = $result.jquery ? $result.add(links[i]) : $(links[i]);//результат как jquery объект
}

Но есть маленькое «но», например «mysite/» и «mysite/index.html» указывают на одну и ту же страницу, со всеми вытекающими отсюда нюансами


  • Показать ещё
    Загружается…

25 мая 2023, в 20:52

2500 руб./за проект

25 мая 2023, в 20:48

1800 руб./за проект

25 мая 2023, в 20:19

2500 руб./за проект

Минуточку внимания

Думаю, что для Вас не секрет, что при помощи популярной библиотеки jQuery мы можем сделать наши веб-страницы интерактивными. Выбрав нужный элемент из объектной модели DOM нашей страницы мы можем заставить его исчезнуть, появиться, отреагировать на клик мыши (или другое событие), изменить стиль элемента и сделать еще очень много разных вещей. Эта статья будет посвящена селекторам и фильтрам библиотеки jQuery. Вы узнаете, как из всего многообразия элементов веб-страницы выбирать именно нужный.
селекторы и фильтры jquery
В своих уроках я часто использую библиотеку jQuery, так как с ее помощью можно действительно сделать очень много интерактивных и интересных вещей. Однако, сама по себе (просто подключенная библиотека) она ничего не дает, еще необходимо написать код, который и будет создавать интерактивность для различных элементов веб-страницы. И конечно же в этом коде мы всегда используем селекторы для того, чтобы выбрать нужный элемент с веб-страницы.

Сегодня я покажу Вам как использовать селекторы (простые и сложные), при помощи которых вы сможете выбирать для дальнейшей работы нужный элемент (или группу элементов). А также мы рассмотрим фильтры jQuery, чтобы фильтровать нашу выборку.

Селекторы библиотеки jQuery

селекторы библиотеки jquery
JQuery предлагает очень мощную технику выбора и работы с коллекциями элементов. Если Вы писали файлы таблиц стилей CSS, то принцип работы селекторов в jQuery Вы поймете очень быстро.

Основной синтаксис здесь таков:

$('селектор');

Знак $ обозначает специальную команду – объект jQuery. По сути – это сокращение от jQuery.

Итак, давайте начнем с простых селекторов.

1. Вы можете выбрать любой элемент веб-страницы по его идентификатору.

Например, если на странице у Вас имеется <div id=”main”></div>, то выбрать его по идентификатору можно следующим образом:

$('#main');

Здесь знак # указывает именно на то, что мы выбираем элемент по его идентификатору (также, как и в css-селекторах).

2. Вы также можете выбрать элемент или группу элементов по названию их тега.

Например, чтобы выбрать все ссылки на странице достаточно написать следующее:

$('a');

Здесь, как Вы можете видеть, никаких лишних знаков нет, только название тега в кавычках.

3. Еще один простой способ выбора элементов – это выбор по имени класса.

Например, чтобы выбрать все кнопки Вашей навигационной панели, имеющие одинаковое имя класса (class=”nav”), Вы можете написать следующую выборку:

$('.nav');

Здесь ключевым моментом является точка «.», которая обозначает, что Вы выбираете элементы именно по имени класса.

Это были самые простые селекторы, которые прекрасно работают, однако, не могут предоставить всей глубины выбора. Они наиболее общие и зачастую выбирают группу элементов. Но на практике мы часто сталкиваемся с необходимостью более конкретного выбора.

Для этого давайте рассмотрим более сложные селекторы. Они позволят нам более точно указать на нужные теги.

4. Селектор потомков, например, позволяет указать на тег, заключенный в другом теге.

Допустим, что у Вас есть ненумерованный список (тег <ul>) с идентификатором «nav» (<ul id=”nav”>), и в этом списке присутствуют ссылки. Вы хотите выбрать все ссылки на странице, которые находятся внутри этого ненумерованного списка. В таком случае выборку будем делать следующим образом:

$('#nav a');

Как Вы можете видеть селекторы расположены через пробел. Селектор, указанный последним в списке – это и есть тот элемент (или группа элементов), который мы выбираем. Селектор (или селекторы), находящиеся левее это тег, в котором находится выбираемый элемент.

Например, при таком выборе $('#main p span'); мы выбираем все теги «span», которые находятся в теге абзаца «p», который в свою очередь расположен в теге с идентификатором «main».

5. При помощи дочерних селекторов мы можем указывать на элемент прямой потомок другого элемента.

Например, у нас есть элемент <div id=”main”>, внутри которого есть теги абзацев (p). Помимо тегов с абзацами в этом элементе div также расположен еще один элемент div, который также включает в себя теги с абзацами. Но нам необходимо выбрать только теги абзацев, которые находятся непосредственно в <div id=”main”>, не включая абзацы из вложенного в него тега div.

Если мы будем действовать по принципу из пункта 4, то выберутся все теги абзацев. А если будем выбирать вот так:

$('#main > p');, то выберутся только теги абзацев дочерние для тега с id=”main”.

6. При помощи соседних родственных селекторов можно выбрать тег, идущий сразу после другого тега. Где это может быть полезно? Приведу один пример. Допустим у Вас есть заголовок, нажав на который, сразу под ним появляется результат вычисления в теге <span>. До нажатия на заголовок этот тег невидим. В момент нажатия Вы хотите сделать его видимым для пользователя. Вам нужно выбрать этот тег <span>. Это легко можно сделать использовав соседние родственные селекторы, вот так:

$('h3 + span');

Достаточно добавить знак «+» между двумя селекторами. Только не забудьте, что в этом случае тег <span> должен идти сразу за заголовком h3.

7. При помощи селектора атрибута мы может выбрать элемент (или группу элементов) по наличию у него определенного атрибута. Мало того, мы даже можем выбрать элемент, определенный атрибут которого имеет определенное значение. Сейчас Вы все увидите на примерах.

Например, нам нужно выбрать все изображения на странице, которые имеют атрибут «alt». Для этого мы может написать следующий селектор:

$('img[alt]');

Если нам нужно выбрать все теги <input> формы содержащие текст, Вы можете использовать следующий селектор:

$('input[type="text"]');

Если Вы хотите выбрать тег по атрибуту, значение которого начинается с определенных символов, например, все ссылки, атрибут «href» которых начинается с «http», то селектор атрибута можно применить со специальным символом «^» следующим образом:

$('a[href^="http"]');

Также можно выбирать и элементы, чьи атрибуты заканчиваются определенным образом. Делается это при помощи специального символа «$». Таким образом можно, например, выбрать все ссылки на странице с расширением «.xml» (или каким-то другим).

$('a[href$=".xml"]');

Если нужно выбрать элемент с атрибутом, в любом месте которого содержится определенное значение, то это можно сделать при помощи специального символа «*». Таким образом, если я хочу выбрать все ссылки на странице, в атрибуте «href» которых содержится значение «website-create.ru», то я могу воспользоваться следующим кодом:

$('a[href*="website-create.ru"]');

Таким образом я выберу все ссылки, которые могут вести на разные страницы моего блога.

Также мы можем выбирать элементы, значение атрибута которых не содержит конкретное значение. Например, мне нужно выбрать все элементы <input>, кроме тех, у которых текстовый тип. Это можно сделать так:

$('input[type!="text"]');

Вот я Вам и рассказала об основных селекторах, знание которых поможет Вам при выборке элементов веб-страницы.

А теперь давайте поговорим о том, как эти выборки можно фильтровать, сужая свой выбор до определенных элементов с определенными характеристиками.

Фильтры jQuery

фильтры библиотеки jquery
Для того, чтобы применить фильтр к выборке, нужно поставить двоеточие после основного селектора и прописать нужный фильтр. Сейчас мы рассмотрим основные фильтры на примерах.

1. Допустим у нас есть таблица с именем класса «mytab» и в ней мы хотим выбрать все четные строки. Для этого мы можем использовать фильтр «:even», который профильтрует по четным значениям индексов элементов массива.

$('.mytab tr:even');

Только не забудьте, что нумерация в массиве начинается с 0. Поэтому фактически этот фильтр выберет все четные индексы (0, 2, 4…), а по сути нечетные строки, так как первый элемент будет иметь индекс со значение 0, а третий – со значением 2.

А чтобы в действительности выбрать четные строки в таблице, мы должны пройтись по нечетным индексам, используя фильтр «:odd».

$('.mytab tr:odd');

2. Другой вид фильтров способен выбрать первый или последний элемент из выборки.

Например, я выбираю все абзацы в теге с идентификатором «main», но хочу отфильтровать и взять только первый абзац. Для этого я могу использовать следующий код:

$('#main p:first');

А если мне нужен только последний абзац, то я напишу вот так:

$('#main p:last');

3. Чтобы выбрать элементы, не относящиеся к данному типу селектора, можно использовать фильтр «:not()».

Например, мне нужно выбрать все изображения кроме тех, которые имеют класс «picture». Я могу сделать это следующим образом:

$('img:not(.picture)');

Еще один пример. Например, мы хотим найти все ссылки, начинающиеся не с «http». Для этого используем следующий код:

$('a:not([href^="http"])');

4. Еще один фильтр позволяет находить элементы, которые содержат другие элементы.

Например, мне нужно найти все теги <li>, но только те, внутри которых есть ссылка (тег <a>). Для этого можно использовать фильтр «:has».

$('li:has(a)');

5. При помощи фильтра «:contains» мы можем найти элементы, содержащие определенный текст.

Чтобы найти все ссылки с анкором «здесь», можно использовать следующий код:

$('a:contains(здесь)');

6. Для того, чтобы найти скрытые элементы на странице (это элементы, которые мы не видим на странице. Они могут быть скрыты при помощи css, jQuery или иметь нулевые высоту и ширину) можно использовать фильтр «:hidden».

Например, чтобы найти все скрытые элементы <div> на веб-странице, можно написать вот такой код:

$('div:hidden');

Вот, пожалуй, я и познакомила Вас с основными фильтрами. Хочу сразу сказать, что это не все существующие фильтры, есть и еще. В том числе существуют специальные фильтры для работы с формами, но о них я напишу в одном из следующих постов. А сейчас Вы, по крайней мере, познакомились с основными селекторами и фильтрами, применяя которые Вы без труда сможете выбирать любой элемент (или группу элементов) со своей веб-страницы, а потом делать с этим элементом все, что пожелаете, обеспечивая интерактивность своему веб-ресурсу.

Надеюсь, после прочтения этого поста, селекторы и фильтры jQuery станут для Вас не просто непонятным кодом, а Вы будете совершенно четко понимать, что они делают и как их использовать.

И, конечно же, как всегда жду Ваших комментариев. Если статья Вам понравилась – поделитесь ей с друзьями при помощи кнопок социальных сетей (буду очень признательна).

Успехов Вам, друзья! Оставайтесь на связи и подписывайтесь на обновления блога, если еще не подписаны.

А также пишите, какие темы Вам интересны и полезны. Ваше мнение и пожелания Очень Важны.

С Вами была Анна Котельникова. До связи!

I have a main menu:

<ul class="menu">
<li><a href="/"><span class="l"></span><span class="r"></span><span class="t">Home</span></a></li>
<li><a href="<%= Url.Action("Login", "User")%>"><span class="l"></span><span class="r"></span><span class="t">My Account</span></a></li>
<li><a href="#"><span class="l"></span><span class="r"></span><span class="t">Post Idea</span></a></li>
<li><a href="#"><span class="l"></span><span class="r"></span><span class="t">Browse Ideas</span></a></li>
<li><a href="#"><span class="l"></span><span class="r"></span><span class="t">Invest in Ideas</span></a></li>

And i am trying to select the active link using jQuery:

<script type="text/javascript">
    $(document).ready(function () {
        var path = location.pathname;
        var home = "/";
        $("a[href='" + [path || home] + "']").addClass("top-menuactive");
    });
</script>

However the javascript depicted above finds all links on site, not just the links in the menu.

How can i change the script to select only the links within<ul class="menu">

asked Jun 5, 2010 at 14:03

stoic's user avatar

1

You can use the descendant selector:

<script type="text/javascript">
    $(document).ready(function () {
        var path = location.pathname;
        var home = "/";
        $("ul.menu a[href='" + [path || home] + "']").addClass("top-menuactive");
    });
</script>

answered Jun 5, 2010 at 14:04

MvanGeest's user avatar

MvanGeestMvanGeest

9,5064 gold badges41 silver badges41 bronze badges

2

4 ответа

Хорошо, вы могли бы поиграть с маленькой библиотекой (и это может быть хорошей идеей сделать это, если вы в конечном итоге хотите делать интересные вещи, чтобы манипулировать результатами), но просто чтобы получить ссылки, я думаю, что придерживаться DOM 0:

document.links

Quentin
05 авг. 2010, в 13:47

Поделиться

Чтобы получить все hrefs из существующих элементов привязки, вы можете сделать следующее, которое вернет их в виде массива:

var links = $("a").map(function() {
                return this.href;
            }).get();

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

$("a").hide(); // or whatever

karim79
05 авг. 2010, в 12:38

Поделиться

У меня есть букмарклет, который находит все гиперссылки и записывает их на HTML-страницу:

JavaScript: ctDL = document.links; ctWI = открыт ( », », ‘ширина = 400, высота = 300, скроллбары, изменяемыми, MenuBar’); ctDO = ctWI.document; ctDO.writeln( »), для (CTI = 0; %20ctI ‘)} пустот (ctDO.close())

gor
05 авг. 2010, в 13:11

Поделиться

Это либо я не понимаю вопроса, либо это не так уж сложно:

function findLinks(innerHTML){
    var fragment = document.createElement('div');
    fragment.innerHTML = innerHTML;

    var links = [];
    fragment.find('a').each(function(index, element){
        links.push($(element).attr('href'));
    });
    return links;
}

Igor Zinov’yev
05 авг. 2010, в 12:02

Поделиться

Ещё вопросы

  • 0Панель обновления мешает работать jquery?
  • 0переопределить функцию в cocos2dx
  • 0Как отключить функцию .change при загрузке страницы
  • 0Как отличить s от ş в подобном поиске
  • 0Изменение данных контроллера с помощью директив AngularJS
  • 1ловить исключение после doThrow JUNIT
  • 1Task.Delay сливается с Task.Yield?
  • 0Как отобразить количество отправленных значений переключателей, используя PHP [duplicate]
  • 0Перенести значение из выпадающего в текстовое поле
  • 0Конструктор копирования C ++ принимает неправильные значения
  • 0Как горизонтально центрировать элемент span внутри тега h1?
  • 0страница в Firefox и Chrome не отображает ul правильно
  • 1Volley parrams, как отправить значение 95, чтобы сервер не получил «95», но он получит 95
  • 1Как сделать преобразование NaN >> [»] во все элементы Pandas Dataframe?
  • 1Приложение закрывается после того, как намеренно не дал разрешение на местоположение
  • 0AngularJS 1.4.1 ng-submit не запускается после сброса формы
  • 1Какой самый быстрый и простой способ связи между двумя процессами в C #?
  • 0Сконфигурируйте пользовательский интерфейс Angularjs из Java перед загрузкой сетки
  • 1Настройка аннотации Springs3 Hibernate3
  • 1Как получить неуправляемый C-массив переменной длины в структуре из C в C #?
  • 0Как закрыть все открытые панели при нажатии на другую
  • 0Как включить хинтинг кода для CSS в Sublime Text 2?
  • 0Можно ли использовать постоянное значение адреса памяти для другого времени? [Дубликат]
  • 1Удалить похожие элементы из списка
  • 0Отладка сортировки слиянием
  • 0Как мне предложить пользователю ввести символ или цифру?
  • 0C ++ if заявления
  • 0Поменяйте местами два HTML-тега, между которыми есть некоторые фиксированные теги
  • 1как динамически добавлять данные в datatable (Gridview)
  • 0Заказать автоматически внутреннее соединение
  • 1Заголовки с несколькими ответами с одинаковым именем в Java
  • 0Почему мой процесс останавливается при запуске в фоновом режиме?
  • 0Как центрировать <div>, не затрагивая содержимое внутри?
  • 1Потоковые mp3-файлы из хранилища Firebase
  • 0SQL Как удалить данные из таблицы с помощью INNER JOIN
  • 1В чем разница между возвратом Обещания с .then () и без .then ()?
  • 0AngularJS — Что мне нужно делать вручную, когда я использую ngModelOptions allowInvalid = true?
  • 1Параметр Deep Link IO ветви не появляется в реагировать родной
  • 0Mysql сервер ушел — во время mysqldump
  • 1Включить CSS в Struts2 JSP странице
  • 0Как проверить, если сегодняшняя дата = дата из sql?
  • 1Не могу неявно преобразовать целое число типа в bool
  • 0Можно ли дать динамические имена для кнопок ввода HTML?
  • 0Чтение файла, в котором отчество не обязательно
  • 0MYSQLI — приращение запроса ГДЕ значение за прогон
  • 1Как вызвать метод в другом классе из универсального метода?
  • 1Как установить кодировку для персидского символа при экспорте вида сетки в Excel в ASP.NET?
  • 1в чем причина добавления applicationContext-dao.xml и applicationContext-service.xml в контексте приложения
  • 0Остановить браузер от чтения медиа-запросов
  • 0удалить часть запроса имени MySql

Понравилась статья? Поделить с друзьями:
  • Как найти свой чат в инстаграме
  • Как найти радиус если известна окружность круга
  • Как найти свой вариант огэ после экзамена
  • Как найти трафарет слова
  • Как составить статью об ученом