У меня есть следующая ссылка, которая должна показывать изображение в ссылке при загрузке javascript:
<a href="http://upload.wikimedia.org/wikipedia/commons/a/ae/Mad_scientist.svg" id="a">
<img alt="no image">
</a>
Предполагается, что javascript получит свойство href ссылки и включит его при написании html для изображения.
$('#a').html('<img src="' + $(this).attr('href') + '">image');
Так или иначе, $(this).attr('href')
возвращает undefined
. Что не так с этим?
$('#a').html(function () {
return '<img src="' + $(this).attr('href') + '">image'
});
Функция, возвращающая содержимое HTML для установки. Получает индексную позицию элемента в наборе и старое значение HTML в качестве аргументов. jQuery освобождает элемент перед вызовом функции; используйте аргумент oldhtml для ссылки на предыдущий контент. Внутри функции это относится к текущему элементу в наборе.
Refrence
http://api.jquery.com/html/#html-functionindex--oldhtml
http://learn.jquery.com/javascript-101/this-keyword/
В вашем коде
$('#a').html('<img src="' + $(this).attr('href') + '">image');
$(this)
не определен в вашем коде.
например.
$('#a').html(function () {
return '<img src="' + $(this).attr('href') + '">image'
});
В приведенном выше коде this
относится к текущему элементу, т.е. к элементу с id="a"
var obj= $("#a");
obj.html('<img src="' + obj.attr('href') + '">image');