将jQuery元素引用作为对象属性进行访问
Accessing a jQuery element reference as an object property
我正在尝试使用jQuery将元素设置为对象的属性。当我直接引用jquery对象时,它是有效的,但是当我通过calculator对象进行引用时,它不起作用。
我该如何解决这个问题?
var calculator = {
settings: {
displayNumber: $('.dispNumber'),
modNumber: $('.modNumber')
}
}
window.onload = function(){
console.log( $('.dispNumber').html() ); //this one works
console.log( calculator.settings.displayNumber.html() ); //this one doesn't
}
如果calculator.settings.displayNumber
不是在dom就绪的作用域中创建的,那么它就没有元素。
由于您使用的是jQuery,所以您应该将处理DOM的所有内容都放在其中:
$(function() {
//code here will always run after the DOM is ready.
var calculator = {
settings: {
displayNumber: $('.dispNumber'),
modNumber: $('.modNumber')
}
};
console.log( $('.dispNumber').html() ); //this one works
console.log( calculator.settings.displayNumber.html() ); //this one doesn't
});
或
只需在</body>
之前添加<script>........code.......</script>
。
第一个是处理DOM相关操作的正确方法。
编辑:可重复使用对象:
var Calculator = function($) {
this.settings = {
displayNumber: $('.dispNumber'),
modNumber: $('.modNumber')
};
};
Calculator.prototype = {
log: function() {
console.log(this.settings.displayNumber.html());
console.log(this.settings.modNumber.html());
}
}
$(function(){
var calculator = new Calculator($);
calculator.log();
console.log(calculator.settings.displayNumber.html());
});
您的代码运行良好。它不应该工作的唯一原因是计算器没有在window.onload.之前安装
消除这个问题,一切正常。请参阅:http://jsfiddle.net/352Cm/
var calculator = {
settings: {
displayNumber: $('.dispNumber'),
modNumber: $('.modNumber')
}
}
console.log( $('.dispNumber').html() ); //this one works
console.log( calculator.settings.displayNumber.html() ); //this one doesn't
尝试在window.load
中使用console.log(calculator)
,您可能会看到"未定义"或崩溃代码。
相关文章:
- JavaScript Pub/Sub属性访问问题
- AngularJS:如何用同一对象的另一个属性访问一个属性
- Ember JS属性访问器
- 对方法或属性访问的意外调用
- 对jQuery中IE8的方法或属性访问的意外调用
- 对方法或属性访问的意外调用.在JQUERY
- XDomainRequest onload上对方法或属性访问的意外调用
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 从函数属性访问对象属性;不适用于Firefox
- 重写内部 HTML 属性访问
- (仅在IE中)SCRIPT65535:对方法或属性访问的意外调用.主.js,第 152 行字符 28
- 使用表达式属性访问不同的模型模板选项
- jQuery mobile 1.1.0 滑块:JS-对象属性访问
- Ractive.js,通过命名属性访问父属性
- jQuery验证插件addMethod可以通过属性访问
- 如何使用动态属性访问对象
- 我无法通过 Firefox 中的“for”属性访问标签,但可以在 Chrome 中访问标签
- JavaScript 对象原型属性访问
- 使用虚拟属性访问猫鼬模型中的嵌套文档
- 是否可以在Javascript/Coffeescript中的属性访问期间自动调用函数调用