Javascript jQuery.css不适用于添加了append的元素?

Javascript jQuery.css不适用于添加了append的元素?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我使用模块化模式来编写JS代码。我有一个引用了我所有dom元素的对象。我已经为一个div设置了选择器,我将在稍后的代码执行中添加该div。当我添加这个div,并使用jQuery.css使用我存储在references对象中的引用时,它不起作用 NameSpace = { objects: { someButton: $('.someButton'), someDiv: $('.someDiv'), myDiv: $('.myDiv'), /

我使用模块化模式来编写JS代码。我有一个引用了我所有dom元素的对象。我已经为一个div设置了选择器,我将在稍后的代码执行中添加该div。当我添加这个div,并使用jQuery.css使用我存储在references对象中的引用时,它不起作用

NameSpace = {
    objects: {
        someButton: $('.someButton'),
        someDiv: $('.someDiv'),
        myDiv: $('.myDiv'), //This will be added later
        //Other references
        .
        .
    },

    bindHandlers: {
        NameSpace.objects.someButton.on('click', someEventHandler);
        //Other bindings
        .
        .
    },

    eventHandlers: {
        someEventHandler: function(e){
            var div = jQuery('<div class="myDiv"></div>');
            NameSpace.objects.someDiv.append(div);

            //Doesn't work! If I use jQuery('.myDiv'), then it works,
            //but kills my modular style
            NameSpace.objects.myDiv.css({ //some styles });
        },
        //Other event handlers
    }
}
//Other code
名称空间={
对象:{
someButton:$('.someButton'),
someDiv:$('.someDiv'),
myDiv:$('.myDiv'),//这将在以后添加
//其他参考资料
.
.
},
BindHandler:{
NameSpace.objects.someButton.on('click',someEventHandler);
//其他绑定
.
.
},
事件处理程序:{
someEventHandler:函数(e){
var div=jQuery(“”);
NameSpace.objects.someDiv.append(div);
//不起作用!如果我使用jQuery('.myDiv'),那么它就起作用了,
//但却扼杀了我的模块化风格
css({//some styles});
},
//其他事件处理程序
}
}
//其他代码
这种方法适用于页面中存在的对象,但不适用于我上面添加的div


有什么帮助吗?

Javascript是程序性的,这一行
myDiv:$('.myDiv')
只计算一次,而不是每次调用它

这意味着您的选择器
$('.myDiv')
在页面的开头填充

要解决这个问题,必须将变量设置为函数

objects: {
        someButton: $('.someButton'),
        someDiv: $('.someDiv'),
        myDiv: function(){ return $('.myDiv'); }, //This will be added later
        //Other references
        .
        .
    },
每次调用选择器时,它都应该重新计算选择器


让我知道这个把戏是否管用。

试过了,伙计。。。但它抛出了一个错误,当console记录objects.myDiv时,它将我显示为一个“函数”。这意味着它得到的是指定的函数,而不是返回值@RutwickGangurde做
objects.myDiv()
。谢谢Florian,你的解决方案成功了!我可以对任何动态添加的元素执行此操作吗?您应该对动态添加的元素的每个选择器(对象中的选择器)执行此操作。为所有人这样做也不是一个太坏的主意,因为这样会减少混乱,也不会消耗太多资源。1.9版和2.0版之间存在一些差异请点击链接查看哪些差异?我无法从你的小提琴中找出任何东西…尝试在1.9和2.0版本之间切换