使用我的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');
“第一件事”出现了,但“第二件事”却没有出现。
有什么想法吗?这件事让我疯狂。
答案 0 :(得分:1)
终于找到了解决办法:
我使用window.location调用了objective-c函数。事实证明,如果我在window.location调用周围添加了一个setTimeout,一切都开始工作了。我猜测调用window.location会立即调用Objective-C代码,中断javascript线程,使事情处于不良状态。通过添加setTimeout,它允许javascript线程在跳转到Objective-C代码之前完成。或类似的东西。