jQuery - нацеливание на <a> элементы, чьи ссылки указывают на изображения

0

Как настроить таргетинг на все элементы <a> чья точка href указывает на файлы изображений? Ради удобства, он может просто нацеливаться на все файлы .jpg, .jpeg, .png и .gif.

Пример HTML:

<a href="file1.jpg">file1</a>
<a href="file2.png">file2</a>
<a href="file3.zip">file3</a>

Запуск jQuery:

$(target).remove();

Должны производить:

<a href="file3.zip">file3</a>
Теги:

4 ответа

4

Вы можете сделать что-то подобное с помощью селектора атрибутов

$('a[href$=jpg],a[href$=png]').remove();

Fiddle Demo

Документация: http://api.jquery.com/category/selectors/attribute-selectors/

  • 0
    Будет ли это работать даже для следующего? <a href="file1.jpg?rev=2">file</a>
  • 1
    в этом случае используйте $('a[href*=jpg],a[href*=png]').remove();
Показать ещё 3 комментария
1

Regex решение:

$("a").each(function() {
    if ( $(this).attr("href").match(/\.(png|jpg|jpeg|gif)(?:\?(.*))?$/) ) {;
        $(this).remove();
    }
})
  • 0
    Что насчет <a href="file1.jpg.zip?rev=2">file</a> ?
  • 0
    @ user3362707 Я думаю, что "file.jpg? rev = 2" должен быть включен в набор элементов <a> которые нужно удалить.
Показать ещё 1 комментарий
0

Отредактировано. Вы можете достичь этого. Каждый селектор, разделенный запятыми, задает тип файла

var imageLinks = $('a[href*=".jpg"], a[href*=".jpeg"], a[href*=".png"], a[href*=".gif"]');

вы должны это прочитать: селектора jQuery

  • 2
    Это не сработает для <a href="file1.jpg?rev=2">file</a>
0

Если вы хотите избавиться от <a> элементов, которые включают атрибуты "href", содержащие пути, которые выглядят как общие имена файлов изображений, я думаю, вам придется использовать .filter() и регулярное выражение.

$('a').filter(function() {
  return /\.(?:jpg|png|gif)(?:\?.*)?$/i.test(this.href);
}).remove();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню