元素列表后面的jquerymobile eval,缺少对象参数

时间:2012-02-29 23:58:54

标签: javascript jquery jquery-mobile

这个处理程序不喜欢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 + ')');
});

1 个答案:

答案 0 :(得分:1)

你强迫$page成为字符串的一部分,因为它是一个jQuery对象,所以它不能正常工作。该字符串将为[object Object],因为jQuery对象没有更好的字符串表示形式。

这正是避免使用eval的情况。这应该有效,而且更清洁,更安全:

Controller.Method[type]($page);