list[i].fnctn
- 包含我要附加到click事件处理程序的函数的名称。我在同一js
文件
function createList(list){
var parentID = $("#content_nav ul");
var len = list.length;
for(var i=0;i<len;i++){
var anchorElement = jQuery('<a />',{text:list[i].text});
var liElement = jQuery('<li />',{"class":"navlink_"+(i+1),id:"navlink_"+(i+1)});
//anchorElement.attr('onclick',list[i].fnctn+"()"); - Works fine on desktop browsers but doesn't work on mobile devices. (Mobile devices are my target platform
anchorElement.on('click',{funct:list[i].fnctn},function(event) {
return window[event.data.funct](event);
});
liElement.append(anchorElement);
parentID.append(liElement);
}
}
此代码在桌面浏览器上运行良好。但是当我使用手机间隙将其部署到移动设备时,它不起作用。
有什么问题?
我试过的设备是 - 三星谷歌Nexus S(ICS 4.0.0)iPhone 4和iPhone 4s(模拟器),Android模拟器。
PS:如果还有其他更好的办法,请告诉我。我现在正在做的是,我将从JSON(作为字符串)分配给事件处理程序的函数的名称,然后使用上面的代码应用它。我不知道那是不是最好的做法。请帮助:)
答案 0 :(得分:1)
只需更改代码顺序:
function createList(list){
var parentID = $("#content_nav ul");
var len = list.length;
for(var i=0;i<len;i++){
var anchorElement = jQuery('<a />',{text:list[i].text});
var liElement = jQuery('<li />',{"class":"navlink_"+(i+1),id:"navlink_"+(i+1)});
//anchorElement.attr('onclick',list[i].fnctn+"()"); - Works fine on desktop browsers but doesn't work on mobile devices. (Mobile devices are my target platform
// append the target first
liElement.append(anchorElement);
parentID.append(liElement);
// after append then bind the
// click event
anchorElement.on('click',{funct:list[i].fnctn},function(event) {
return window[event.data.funct](event);
});
}
}