2009-02-26 8 views
0

Courir dans le problème le plus étrange sur iPhone en utilisant jQuery avec mon WebViewController.iPhone Webkit jQuery étrangeté: Impossible de mettre à jour le contenu

J'ai un div dans lequel je joins le contenu:

<div id="thumbnails"> 
    Here are your thumbnails: 
    <div id="mythumbs"></div> 
</div> 

Le code ressemble à:

for (var i = 0; i < thumbs.length; i++) { 
    var item = thumbs[i]; 
    $('<img class="imgthumb" />').data('url', item.Url).attr({ 
    "src": item.Thumbnail.Url, 
    }).appendTo($('#mythumbs')); 
}; 

Fonctionne très bien.

Ensuite, je passe à d'autres divs ($('#thumbnails').hide(); $('#someotherdiv').show()), allez sur mon entreprise, et éventuellement revenir à la division div vignettes. À ce stade, je n'arrive plus à ajouter de contenu à cette div en utilisant jQuery. Je peux enlever très bien, mais l'append ne fonctionne plus.

Le même code fonctionne très bien sur Firefox et Safari en dehors de l'iPhone, mais une fois dans le WebKit intégré, il échoue.

Si je modifie le JavaScript DOM en utilisant directement cela fonctionne, mais si je l'utilise jQuery il échoue:

var x = document.createTextNode('THE FIRST THING'); 
document.getElementById('thumbspage').appendChild(x); 
$('#thumbspage').append('-- THE SECOND THING'); 

« LA PREMIÈRE CHOSE » apparaît, mais « La deuxième chose » ne fonctionne pas.

Des idées? Cette chose me rend fou.

Répondre

1

enfin trouvé un travail autour:

J'invitais ma fonction objective-c à l'aide window.location. Il s'est avéré que si j'avais ajouté un setTimeout autour de l'appel à window.location, tout a recommencé à fonctionner. J'imagine que l'appel de window.location appelle immédiatement le code objectif-C, interrompant le thread javascript, laissant les choses dans un mauvais état. En ajoutant setTimeout, le thread javascript se termine avant de sauter dans le code objectif-C. Ou quelque chose comme ça.

Questions connexes