我希望在我的对象中使用它将使用的所有jQuery对象创建一个属性。我是JavaScript的新手,这就是我想要一个建议的原因。我可以这样做吗?
var myVar = {
init: function() {
//...
this.obj = {
id1: $('#id1'),
id2: $('#id2'),
id3: $('#id3')
}
this.method2();
},
method1: function() {
alert(this.obj.id1.html()) // some work with id1
},
method2: function() {
alert(this.obj.id1.html()) // some work with id1
}
};
$(function() {
myVar.init();
myVar.method1();
});
答案 0 :(得分:2)
您可以尝试扩展jQuery以直接在元素上使用这些方法。
$.fn.method1 = function () {
alert(this.html());
return this;
};
$("#id1").method1();
理想情况下,您可以将这些放在自己的命名空间中,以免污染jQuery命名空间(以避免冲突等)。在扩展jQuery here时,您可以阅读有关一些最佳实践的更多信息。
答案 1 :(得分:2)
您的代码似乎很好。我能用你的代码预见到的唯一问题是,DOM在运行时可能没有准备就绪:
var myVar = {
init: function() {
//...
this.obj = {
id1: $('#id1'),
id2: $('#id2'),
id3: $('#id3')
}
},
method1: function() {
alert(this.obj.id1.html()) // some work with id1
},
method2: function() {
alert(this.obj.id1.html())
}
};
// run the init code (and any code that relies on init) after the DOM is ready
$(function() {
myVar.init();
myVar.method1();
});
示例: http://jsfiddle.net/2HppG/1/
(在示例中,我删除了默认情况下jsFiddle提供的标准DOM Ready包装。)