Показать сообщение отдельно
  #5 (permalink)  
Старый 10.11.2012, 22:21
Аспирант
Отправить личное сообщение для zebra741258963 Посмотреть профиль Найти все сообщения от zebra741258963
 
Регистрация: 13.12.2011
Сообщений: 67

Возникла ещё одна проблема... Причём только на IE8 и НЕ постоянная (то появляется, то нет).

В коде модифицировал:
$(document).ready(function(){  
  $('img.Mini').click(function(e) 
    $('<img id=BigFoto />')
      .load(function()  {alert($('#BigFoto').width())})
      .click(function() {$('#BigFoto').remove()})
      .attr('src', $(this).attr('srcBig'))
      .appendTo('body');


Как и раньше при нажатии на привьюшку jQuery создаёт картинку (тут я дал ей id=BigFoto), и как только она будет загружена, я через алерт вывожу на экран её ширину.
За одно показал как я удаляю её (просто нажатием).

Если нажать на привьюшку первый раз - моя BigFoto создастся.
Потом нажимаю на неё и она удаляется.
Начиная со второго нажатия я в 50% случае не получаю ширину создаваемой картинки. Тоесть могу как получить ширину, так и получить null. При этом сама картинка создастся!
Более того даже если я вместо ширины попытаюсь вывести:
alert($('#BigFoto').attr('id'));
я получу null на запрос самого идинтификатора, который тут разумеется "BigFoto".
Если я попытаюсь посмотреть на страницу глазами IE8 (через встроенный Develouper Tool) то я увижу что img id=BigFoto существует, и даже удалится при нажатии он без пробелем (и ширину свою покажет).

Тоесть я попадаю на какой-то очередной касаяк с тем что .load у меня отрабатывается быстрее чем этой картинке присваевается даже id.

Пробывал заполнить id через атрибуты:
$('<img />')
      .attr('id','BigFoto')
      .load(function()  {alert($('#BigFoto').width())})
результат не меяется - .load в половине случаев запускается до появления картинки.

Проверял на нескольких компах (на очень старой с одноядерным процессором 2005-ого года и на сверхновой с 8-поточным процессором i7-2600K) везде проблема только на IE8.

Последний раз редактировалось zebra741258963, 11.11.2012 в 00:44.
Ответить с цитированием