2012-10-09 58 views
3
function Class() { 
    var self=this; 
    self.searchfield=$('#search'); 
    self.resultbox=$('#searchresults'); 

    self.onSearchFieldChanged=function() { 
     console.log("F: "+self.searchfield); 
     console.log("R: "+self.resultbox); 
    } 
    self.searchfield.live("keyup",self.onSearchFieldChanged); 
} 
var INSTANCE=null; 
Class.init=function() { 
    INSTANCE=new Class(); 
} 
$(document).bind("globalsloaded", Class.init); 

只要我在#搜寻输入类型的东西,在控制台输出如下:的Javascript成员变量未定义

F: undefined 
R: undefined 

那么,为什么这两个变量未定义?它们在范围内并且应该包含相应的jQuery对象。

+2

作品:http://jsfiddle.net/nSRP4/。 – pimvdb

+0

它确实有效,你确定在相关的dom元素准备好时调用这个片段吗? – mamoo

+1

你忘了'$(document).ready()'? –

回答

0

后工作5天,我发现了问题:JQueryMobile

什么情况是:

  1. deviceready事件通过PhoneGap的
  2. domready事件
  3. 我的init叫
  4. JQM提取物input#search元素重新插入它,被一些风格div围绕
  5. 我保存在我的初始化股利不再有效,因为指的是“老”的DOM元素

现在,我做我的初始化在pageinit事件JQM的。没有问题了。