为什么jQuery在ready事件中找不到元素?



>我用属性和方法定义了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对象方法中的必要元素。

在什么错误中?

看起来您没有在 dom 就绪处理程序中声明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中进行

最新更新