这个处理程序不喜欢eval函数中的$ page参数,在元素列表之后得到错误“缺失”无论如何都要传递这个参数吗?
$('div[data-role="page"]').live('pageinit pagebeforeshow pageshow pagebeforehide pagehide', function (event, ui) {
var $page = $(this);
var type = event.type.replace('page', 'Page').replace('init', 'Init').replace('before', 'Before').replace('show', 'Show').replace('hide', 'Hide');
eval('Controller.Method.' + type + '(' + $page + ')');
});
答案 0 :(得分:1)
你强迫$page
成为字符串的一部分,因为它是一个jQuery对象,所以它不能正常工作。该字符串将为[object Object]
,因为jQuery对象没有更好的字符串表示形式。
这正是避免使用eval
的情况。这应该有效,而且更清洁,更安全:
Controller.Method[type]($page);