2014-02-12 36 views
0

我所定义的对象CgridAdminView与属性和方法:为什么jQuery在ready事件中没有找到元素?

var CgridAdminView = { 
    controller_name: 'work', 
    div_table_id: 'grid-admin-works', 
    tr_add: $('#' + this.div_table_id).find('tr').eq(1), 
    disabled: '.td_workGroup', 
    list_cols: [ 
     'index', 
     'shortName', 
     'fullName', 
     'codeName', 
     'workGroup_id', 
     'period', 
     'performers'] 
}; 

tr_add属性不包含在准备事件的处理器元件:

$(function(){ 
    CgridAdminView.tr_add.hide(); 
}); 

它是作品:

$(function(){ 
    var tr_add = $('#'+CgridAdminView.div_table_id).find('tr').eq(1); 
    tr_add.hide(); 
}); 

tr_add属性包含对象的方法中的必要元素CgridAdminView

在什么错误?

回答

1

看起来你是不是宣布CgridAdminView一个DOM准备处理程序里面

$(function() { 

    var CgridAdminView = { 
     controller_name: 'work', 
     div_table_id: 'grid-admin-works', 
     tr_add: $('#' + this.div_table_id).find('tr').eq(1), 
     disabled: '.td_workGroup', 
     list_cols: [ 
      'index', 
      'shortName', 
      'fullName', 
      'codeName', 
      'workGroup_id', 
      'period', 
      'performers'] 
    }; 
    CgridAdminView.tr_add.hide(); 
}) 

因为tr_add属性值分配创建CgridAdminView时,所以当对象被创建,如果没有加载目标元素,则$('#' + this.div_table_id).find('tr').eq(1)的评价将不会返回任何结果。

重点是jQuery选择器需要在dom准备好发生

+0

非常感谢,Johny! – ollazarev

相关问题