2011-01-26 7 views
0

Итак, у меня есть эта мини-галерея. Это, как я хочу работать: IMG BIG IMAGE IMG ДИВ описание ДИВ IMG Эскизы IMGИзвлечение атрибута alt из изображения в div (Цель описания галереи)

Everyting работает отлично, за исключением я не знаю, если я правильно извлекая значение альт в DIV. Код вкл:

HTML SAMPLE:

<p><img id="largeImg" src="zdjecia/bawialnia.jpg" alt="Large image" /></p> 
    <div id="opis"></div> 
<p class="thumbs"> 

<a href="zdjecia/bawialnia.jpg" title="Bawialnia"><img src="zdjecia/bawialnia-thumb.jpg" alt="some description" /></a> 

Jquery:

$(document).ready(function(){ 

$("h2").append('<em></em>') 

$(".thumbs a").click(function(){ 

    var largePath = $(this).attr("href"); 
    var largeAlt = $(this).attr("title"); 

    var altText = $(this).attr("alt"); 


    $("#largeImg").attr({ src: largePath, alt: largeAlt }); 

    $("div#opis").html(altText); 

    $("h2 em").html(" (" + largeAlt + ")"); return false; 
}); 

}); 

Заранее спасибо!

+1

Когда вы оказываетесь писать '$ (это)' повторно, вы могли бы рассмотреть возможность сделать это один раз и кэшировать результат вместо этого. * Каждый * вызов '$ (...)' приводит к нескольким вызовам функций и распределению памяти или двум. Три вызова в обработчике кликов на самом деле не имеют значения, но это плохая привычка. Попробуйте 'var $ this = $ (this);' then '$ this.attr (" href ")', '$ this.attr (" title ")' и т. Д. FWIW. (Если вы создаете закрытие, вы можете очистить этот var в конце вашей функции, например '$ this = undefined;' - если, конечно, это не полезно для закрытий.) –

+3

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

ответ

6

Использование $(this).attr("alt") в этом контексте возвращает атрибут alt тега a, а не дочерний img.

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

var altText = $(this).find('img').attr('alt'); 
Смежные вопросы