Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Вопрос про jquery (https://javascript.ru/forum/css-html/16127-vopros-pro-jquery.html)

prog90 27.03.2011 16:21

Вопрос про jquery
 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function($) {
$(window).load(function(){
$('img[class *= "expander"]').wrap('<a class="highslide no_link" href="' + $(this).attr('src') + '" onclick="return hs.expand(this);">');
});
})(jQuery);
</script>


Этот скрипт должен каждую картинку на странице обернуть в ссылку, для которой задать href равным src картинки, которую она(ссылка) оборачевает.
Почему-то href получается равным "undefined".

$(this).attr('src') - может быть здесь есть ошибка?

Matre 27.03.2011 18:03

В обработчике this равен window, с чего бы ему иметь атрибут src?
Писать надо так:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function($) {
$(window).load(function(){
$('img[class*="expander"]').each(function () {

$(this).wrap('<a class="highslide no_link" href="' + $(this).attr('src') + '" onclick="return hs.expand(this);">')

});
});
})(jQuery);
</script>

prog90 27.03.2011 18:58

А где можно прочитать про то как определяется this? Почему в функции, переданной each, this - это объект img а не window?

Matre 27.03.2011 19:44

Всё предельно просто — и в each, и в load this фокусируется на объект, над которым производится действие. Т. е. делаем each по элементам — функцию вызывается для каждого элемента и this в ней ссылается на элемент, в load навешиваем событие на window — this в этой функции равен window.


Часовой пояс GMT +3, время: 07:08.