2013-07-01 2 views
2

Мне нужно найти значение атрибута с определенным img src.найти значение атрибута по src

<div class="ig_gallery_right_img" style="overflow-y: scroll"> 
    <img src="/corp/homeowner/images/promo/gallery_traditional_3_sm.jpg" 
      swap-section="featured_bath_traditional_1" 
      swap-image="/corp/homeowner/images/promo/gallery_traditional_3.jpg"    
      class="gallery_sidebar_sm" /> 
    <img src="/corp/homeowner/images/promo/gallery_traditional_5_sm.jpg" 
     swap-section="featured_bath_traditional_2" 
     swap-image="/corp/homeowner/images/promo/gallery_traditional_5.jpg" 
     class="gallery_sidebar_sm" /> 
</div> 

мне интересно, если есть способ, я могу получить значение swap-section от источника изображения.

Я попытался var ig_sec = $('img', url_main_pic).attr('swap-section');

, но это дает мне неопределенное значение. Есть идеи ?

ответ

3

Использование attribute selector:

var ig_sec = $('img[src="'+url_main_pic+'"]').attr('swap-section'); 

Demo


Кроме того, если ваш код полностью работоспособен этот путь, HTML не будет проходить W3C валидатор. В случае, если это важно для вашего прецедента, вы должны изучить атрибуты data-*, как указано в @PSL.

+0

который отлично сработал спасибо. –

+0

Может потребоваться обработать, если src является относительным или абсолютным, или, вернее, если значение в 'url_main_pics' отличается от вычисленного значения в свойстве' src'. Возможно, обеспечение 'url_main_pic' относительным и использование' $ ('img [src $ = "' + url_main_pic + '"]') '. – Orbling

+1

@Orbling Да, хорошая точка, атрибут * равно селектору * будет соответствовать только точной строке в атрибуте. Я не стану очень сложным ответом на такой простой вопрос, но есть способы сопоставления в других сценариях. Например. для соответствия полного атрибута URL с относительным, можно использовать атрибут [attribute with selector] (http://api.jquery.com/attribute-ends-with-selector/). И наоборот, просто удалите часть домена из переменной. –

1

Вы можете использовать селектор атрибутов для соответствия.

var value= $('img[src="'+ url +'"]').attr("swap-section"); 

Но swap-section и swap-image не является допустимым атрибутом HTML, так что вы можете рассмотреть предваряя их data-*

<img src="/corp/homeowner/images/promo/gallery_traditional_3_sm.jpg" 
      data-swap-section="featured_bath_traditional_1" 
      data-swap-image="/corp/homeowner/images/promo/gallery_traditional_3.jpg"    
      class="gallery_sidebar_sm" /> 
    <img src="/corp/homeowner/images/promo/gallery_traditional_5_sm.jpg" 
     data-swap-section="featured_bath_traditional_2" 
     data-swap-image="/corp/homeowner/images/promo/gallery_traditional_5.jpg" 
     class="gallery_sidebar_sm" /> 

И доступ к нему с апи

var value= $('img[src="'+ url +'"]').data("swap-section"); 

Если вы хотите, чтобы данные подстановочный знак затем,

var value= $('img[src*="'+ url +'"]').data("swap-section"); //Remember for more than one match you will get the value of the first one alone. SO you may want to loop through. 
+0

Хороший звонок. Я изучал это. –

+0

@TonyLombardi Вы имеете в виду данные - * материал? – PSL

+0

Да Сэр. im перехватывая чей-то код, так что мне нужно писать большой раздел кода. Но ваш вопрос очень важен, и я это сделаю. –

1

Помогает ли это?

$('img[src$="gallery_traditional_3_sm.jpg"]').attr('swap-section'); 

Из того, что я собираю, используя знак $ перед ЦСИ будет указать, что вы заботитесь только о названии файла JPG в конце. Если вы не используете $, вам нужно использовать полный путь к изображению (включая домен). Даже если вы не помещаете домен как часть своего src при объявлении элемента, внутренне домен добавляется как часть атрибута, поэтому попытка найти изображение с использованием относительного URL-адреса src не будет работать, и вы будете получать неопределенный элемент.

+0

Использование '[attribute-name $ = ...] 'означает, что атрибут должен« заканчиваться »значением после' = '. Это из синтаксиса regexp, где '$' соответствует концу строки. – Orbling

Смежные вопросы