iPhone Webkit jQuery奇怪:无法更新内容

时间:2009-02-26 19:02:43

标签: javascript jquery iphone webkit

使用我的WebViewController使用jQuery在iPhone上遇到最奇怪的问题。

我有一个div,我追加内容:

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

代码如下:

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'));
};

效果很好。

然后我切换到其他div($('#thumbnails').hide(); $('#someotherdiv').show()),继续我的业务,​​最终切换回缩略图div。

此时我似乎无法使用jQuery将任何内容附加到该div。我可以删除很好,但附加不再有效。

完全相同的代码在iPhone之外的Firefox和Safari上运行良好,但一旦在嵌入式WebKit中就失败了。

如果我使用JavaScript直接修改DOM,它可以工作,但如果我使用jQuery则失败:

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

“第一件事”出现了,但“第二件事”却没有出现。

有什么想法吗?这件事让我疯狂。

1 个答案:

答案 0 :(得分:1)

终于找到了解决办法:

我使用window.location调用了objective-c函数。事实证明,如果我在window.location调用周围添加了一个setTimeout,一切都开始工作了。我猜测调用window.location会立即调用Objective-C代码,中断javascript线程,使事情处于不良状态。通过添加setTimeout,它允许javascript线程在跳转到Objective-C代码之前完成。或类似的东西。

相关问题