У меня есть простой html-сайт, где наверху находится основное изображение с кнопкой загрузки. Загрузка работает с атрибутом загрузки html5.
Теперь у меня есть миниатюры под основным изображением, которое при нажатии заменяет основное изображение миниатюрным изображением.
Следующий вопрос: я использую один и тот же код javascript, чтобы также заменить URL-адрес кнопки загрузки с помощью эскиза эскизов, но при нажатии кнопки загрузки он по-прежнему открывает ссылку с жестким кодом для загрузки из html вместо использования замененного URL-адреса.
HTML
<div class="dwnldcntnr">
<img src="imgage1.jpg" alt="Image Title 1" />
</div>
<div id="btncntnr">
<a href="imgage/image1.jpg" download="image1.jpg">
<button id="btn">Download</button></a>
</div>
<div class="itemcntnr">
<a href="image2.jpg" title="2.jpg">
<img src="image2.jpg" />
</a></div>
JS-код для замены URL-адреса для загрузки с эскизом эскиза
<script type="text/javascript">
$(document).ready(function() {
$('.itemcntnr a').click(function() {
var path = $(this).attr('href');
$('#btncntnr a').attr('href', path)
.attr('download', $('a', this).attr('title'));
return false;
});
});
</script>
Не помещайте жестко закодированный href для ссылки в html вместо этого, попробуйте добавить его на $(document).ready
Кроме того, я согласен с Арен, что вы никогда не должны поставить button
внутри a
теге. Вместо того, чтобы применить стили к a
теге, так что это будет выглядеть как кнопка
$('#btncntnr a').attr('href', 'imgage/image1.jpg')
Попробуйте заменить весь элемент DOM.
Я не думаю, что вы должны гнездиться на button
внутри a
теге, так как они оба элемента, которые имеют встроенную интерактивность. Скорее всего, вы столкнетесь с ошибками синтаксического анализа HTML в более ранних версиях IE.
$('.itemcntnr a').click(function() {
var $this = $this.clone().empty().html('Download');
$('#btncntnr a').replaceWith($this);
return false;
});
$(this)
вместо созданной переменной $this
). Попробуйте еще раз с выше.
$('a', this).attr('title')
должно быть$(this).attr('title')
. И, поскольку вы используете HTML5, перейдите к атрибутам данных для хранения ваших данных api.jquery.com/data . название не для хранения переменных