list[i].fnctn
- 包含我要附加到單擊事件處理函數的函數的名稱。我有同樣的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分配給事件處理函數的名稱(作爲字符串),然後使用上面的代碼應用它。我不知道這是否是最佳做法。請幫助:)
你叫代碼之後DOM加載或可能像的parentID項目之前運行呢?加載移動設備需要更長的時間。另外,你是否得到任何腳本錯誤? – jfriend00 2012-08-03 05:01:39
是的,我在'$(document).ready()'中執行此操作... ... 另外,如何檢查設備上的腳本錯誤?我在桌面瀏覽器上看不到任何錯誤... – AdityaParab 2012-08-03 05:04:43
不是使用attr設置事件,而是建議使用綁定方法。另外,由於在頁面準備好後元素被添加到DOM,您將需要使用live方法。我希望這有幫助。 – KutePHP 2012-08-03 05:07:09