这个js-code在我个人电脑上的safari上运行,但在ipod touch safari上不能运行(我也在iphone上测试过--仍然不能运行)。
$(document).ready(function(){
$.ajax({
type: "GET",
url: "list.xml",
dataType: "xml",
cache: false,
success: function(xml)
{
$(xml).find('Lights>Light').each(function(){
var lightname = $(this).attr('Name');
$('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems');
});
}
});
});
function lightdata()
{
alert("entered lightdata");
}该代码解析xml并动态创建html。我的提示没有显示在ipod touch上--其他测试提示显示得很好。因此,当我在ipod touch上运行这段代码时,对lightdata的函数调用一定不会因为某些未知的原因而发生(注意这个问题;o)。在手持设备上进行safari调试的可能性是什么?我正在寻找像firebug这样的东西--只为iphones而不是firefox。mobile safari中的调试控制台没有显示任何错误。如有任何建议或建议,我们将不胜感激。
发布于 2010-06-10 22:23:15
由于我没有您的可扩展标示语言可供测试,因此我要冒险说问题出在您的HTML代码中包含额外的字符\')":
更改此行:
$('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems');要这样做:
$('<li><a href="#lightssubmenu" onclick="lightdata()">'+lightname+'</a></li>').appendTo('#lightitems');此外,您应该更改处理事件的方式,并将它们附加到内联onclick处理程序的外部。这是你的代码,稍微改变了一下:
$(document).ready(function(){
var lightItems = $('#lightitems');
lightItems.delegate('a','click', function(e){
e.preventDefault();
lightdata();
})
$.ajax({
type: "GET",
url: "list.xml",
dataType: "xml",
cache: false,
success: function(xml) {
$(xml).find('Lights>Light').each(function(){
var lightname = $(this).attr('Name');
lightItems.append('<li><a href="#lightssubmenu">'+lightname+'</a></li>');
});
}
});
});
function lightdata()
{
alert("entered lightdata");
}注意:这需要jQuery 1.4.2+
https://stackoverflow.com/questions/3015220
复制相似问题