Jquery: получить ссылку по классу или селектору - PullRequest
5 голосов
/ 26 марта 2012

Я создаю список изображений из папки, а затем открываю их в фантастическом ящике ... поэтому у меня есть thumnails, большие изображения и текстовая ссылка на полное изображение.

<div id="download_image">
  <p><a href="images/download/folder/big/<?php echo $file;?>" class="fancybox"><img src="<?php echo $path;?><?php echo $file?>" /></a></p>
  <p><a href="images/download/folder/full/<?php echo $file;?>.zip" class="btn-download">DOWNLOAD</a></p>
</div>

Затем я получаю путь к изображениям с помощью jquery, для каждого изображения:

var download_image = jQuery('#download_image');
var images  = download_image.find('img');

download_images.each(function(){
    var img = jQuery(this);
    var img_source = img.attr('src');

Теперь мне нужно получить ссылку ссылки "btn-download" для каждого изображения ... но я незнать, какой селектор я должен использовать!Любой совет?

Ответы [ 5 ]

4 голосов
/ 26 марта 2012

Попробуйте это

$('a[class=btn-download]').attr('href')
4 голосов
/ 26 марта 2012

Используйте $('.btn-download'), чтобы выбрать элемент по классу.

Если вы хотите получить атрибут href, просто используйте:

var href = $('.btn-download').attr('href');

.*

$('.btn-download').each(function(){
    var href = $(this).attr('href');
    // do something with href
})
2 голосов
/ 26 марта 2012
$('.btn-download').each(function() {
  console.log(this.href); // get the normalized `href` property; fastest solution
  console.log($(this).attr('href')); // get the exact `href` attribute value
});

Обратите внимание, что ответы, поддерживающие $('.btn-download').attr('href'), являются неправильными, поскольку они будут возвращать только значение атрибута href для первого элемента в наборе.

1 голос
/ 26 марта 2012

Попробуйте это:

$('#download_image').each(function(){
    var img_source = $('img', this).attr('src');
    var link_href = $('a.btn-download', this).attr('href');
});
1 голос
/ 26 марта 2012
var download_image = jQuery('#download_image');

download_image.each(function() {
    var imgUrl = $(this).find('p > a > img').prop('src');
    var downloadUrl = $(this).find('p > a.btn-download').prop('href');
    // do something with the urls here.
});

Пример

Функция each является избыточной, потому что у вас должен быть только один элемент с определенным идентификатором. Перечислен здесь на тот случай, если вы хотите иметь более одного загружаемого изображения и кнопки.

В своем вопросе вы упоминаете, что вы получаете путь для каждого изображения. Я настоятельно советую вам сделать download_image классом, если у вас более одного download_image элемента.

...