JQuery attr ('src') undefined в IE 8 (работает в FF)

Это зашло так далеко, что я резюмирую то, что мы обнаружили:

  • Внутри обработчика событий атрибут src не может быть прочитан в IE8 (FF отлично работает), ни с jQuery, ни с обычный javascript

  • Единственный способ получить данные - это вывести их за пределы обработчика, записать их в массив и затем прочитать изнутри обработчика

  • Но возможности записи в src по-прежнему не было (ни jQuery и javascript не работали - только для IE 8)

  • У меня все заработало, написав сами элементы img в документ, но причина этой проблемы не решена

Имеющийся у нас фрагмент используется дважды.

Старый код

<script type="text/javascript">
jQuery(document).ready(function() {
//...
//view entry
jQuery('.blogentry').live('click',function(){
    // Get contents
    blogtext = jQuery(this).children('.blogtext').html();
    blogauthor = jQuery(this).children('.onlyblogauthor').html();
    blogtitle = jQuery(this).children('.blogtitle').html();
    profileimage = jQuery(this).children('.profileimage').html();
    imgleft = jQuery(this).children('.Image_left').attr('src');
    imgcenter = jQuery(this).children('.Image_center').attr('src');
    imgright = jQuery(this).children('.Image_right').attr('src');

    // Write contents
    jQuery('#bild_left').attr('src', imgleft);
    jQuery('#bild_center').attr('src', imgcenter);
    jQuery('#bild_right').attr('src', imgright);
    jQuery('.person').attr('src', profileimage);
    jQuery('#g_fb_name').html(blogauthor);
    jQuery('#g_titel').html(blogtitle);
    jQuery('#g_text').html(blogtext);
    //...
});
//...
// Change entry
jQuery('.blogentry').each(function(){
    entryindex = jQuery(this).attr('rel');
    if (entry == entryindex)
    {
        // The following works fine (so 'children' works fine):
        blogtext = jQuery(this).children('.blogtext').html();
        blogauthor = jQuery(this).children('.onlyblogauthor').html();
        blogtitle = jQuery(this).children('.blogtitle').html();
        profileimage = jQuery(this).children('.profileimage').html();

        // This does not work - only in IE 8, works in Firefox
        imgleft = jQuery(this).children('.Image_left').attr('src');
        imgcenter = jQuery(this).children('.Image_center').attr('src');
        imgright = jQuery(this).children('.Image_right').attr('src');

        //alert: 'undefined'
        alert(jQuery(this).children('.Image_center').attr('src'));

        //...
    }
}
//...
});
</script>

Новый код

См. Мой собственный опубликованный ответ для нового кода.

ОБНОВЛЕНИЕ:

Это не работает, если вызвать внутри щелчка событие !!!

jQuery('.Image_left').each(function(){
alert(jQuery(this).attr('src'));
});

РЕШЕНИЕ ДЛЯ ПОЛУЧЕНИЯ ДАННЫХ ОБРАЗА:

relcounter = 1;
imgleft_array = new Array();
jQuery('.Image_left').each(function(){
imgleft_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgcenter_array = new Array();
jQuery('.Image_center').each(function(){
imgcenter_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgright_array = new Array();
jQuery('.Image_right').each(function(){
imgright_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});

//... inside the eventhandler (entryindex = 'rel' of blogentry):
imgleft = imgleft_array[entryindex];
imgcenter = imgcenter_array[entryindex];
imgright = imgright_array[entryindex];

Это работает, потому что оно не вызывается внутри обработчика событий и источники сохраняются заранее

НО! Я все еще не могу записать данные, это моя цель:

jQuery('#bild_left').attr('src', imgleft);
jQuery('#bild_center').attr('src', imgcenter);
jQuery('#bild_right').attr('src', imgright);

ОБНОВЛЕНИЕ !!!

Это просто безумие, я пробовал записывать данные через обычный javascript. Это также работает в FF, но не в IE8. Вот действительно серьезная проблема с атрибутом src:

document.getElementById('bild_left').src = imgleft;
document.getElementById('bild_center').src = imgcenter;
document.getElementById('bild_right').src = imgright;

alert(document.getElementById('bild_left').src);

Это работает в FF, но не в IE8, атрибут src остается неопределенным после записи! Кажется, это вообще не проблема jQuery!

7
задан 14 revs, 2 users 99% 24 August 2011 в 12:47
поделиться