jquery html ($ ("<img>"). attr ("src", this.href));не работает в Safari - PullRequest
0 голосов
/ 22 января 2011

Я использую простую функцию jquery для галереи изображений. Существует div миниатюр, а затем целевой Div, в который загружаются большие изображения после одного клика по миниатюре.

Он отлично работает во всех браузерах, за исключением Safari, где загружается абсолютный URL-адрес изображения, в отличие от загрузки внутри div.

Вот код jquery:

$("#thumbnails a").click(function() {
    $("#work").html($("<img>").attr("src", this.href));

    return false;
});

Есть мысли? Спасибо

Ответы [ 4 ]

2 голосов
/ 22 января 2011

this.href не безопасно!

Используйте $(this).attr('href'), и оно будет работать.

Проверьте мой вопрос здесь: Получение значений атрибутов HTML «путь DOM 0»

Это объясняет, что существует несколько атрибутов HTML (среди них href), которыепроблематичны, поэтому следует использовать jQuery attr() для получения их значений.

Цитата из ответа на этой странице:

Например, свойство href элемента всегда сообщает о полном URL-адресе, в то время как getAttribute ("href") возвращает указанную строкув атрибуте HTML href дословно.За исключением, конечно, в IE.Функция attQ () в jQuery пытается нормализовать такого рода противоречия.


ОБНОВЛЕНИЕ

Я понял это.Вы не гарантировали, что код jQuery будет запущен после того, как DOM будет готов.Всегда помещайте весь свой код JQuery в обработчик готовности:

$(function() {

    // place all jQuery code here

});

ОБНОВЛЕНИЕ 2

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

$('#thumbnails a').click(function() {
    $('#work').empty().html( '<img src="' + $(this).attr('href') + '">' );
    return false;       
});

Я должен был увидеть это раньше.Аргументом функции html () должна быть строка.


ОБНОВЛЕНИЕ 3

Возможно, Safari (по крайней мере) не выполняет JavaScriptкод на странице, который полностью загружается с помощью метода load () jQuery.

Однако, думаю, я понял, как с этим бороться!

На странице 1776.php переместите элемент SCRIPT из ГОЛОВКИ в ТЕЛО документа.

<body>
    <script> ... the code ... </script>
    <div> ... </div>
</body>
1 голос
/ 22 января 2011
$("#thumbnails a").click(function() {
      $('#work').empty().append($('<img>', {
           src:   this.href
      }));
      return false;
});
0 голосов
/ 12 декабря 2011

Используйте свойство css background:url(...) вместо тега <img> при добавлении изображений через JavaScript только в Safari Mobile.Он не будет работать с <img> тегами.

0 голосов
/ 22 января 2011

Я путаюсь с this.href, потому что, пока вы в атрибуте $("#work").

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

$("#thumbnails a").click(function() {
    var urlHref = $(this).attr('href');
    $("#work").html($("<img>").attr("src", urlHref));
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...