我使用属性和方法定义了 CgridAdminView 的对象:
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 属性不包含 ready 事件处理器中的元素:
$(function(){
CgridAdminView.tr_add.hide();
});
这是有效的:
$(function(){
var tr_add = $('#'+CgridAdminView.div_table_id).find('tr').eq(1);
tr_add.hide();
});
但是 tr_add 属性包含 CgridAdminView 对象方法中的必要元素。
出了什么错误?
答案 0 :(得分:1)
看起来你没有在dom ready handler
中声明CgridAdminView
$(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 ready
中发生