$("#foo").on("click", function() {
amountItems.speek('heey')
})
var amountItems = (function(el) {
// var el = el;
return {
speek: function() {
alert(el)
}
}
}())
这是我第一次尝试使用模块模式。基本上当foo得到点击时我想要调用amountItems函数中的speek方法并且我想传递字符串' heey'这个方法所以它应该警告“heey'当foo被点击时。最初我想传递类似于$("#foo")。text()的内容,但无论如何我得到了#undefined'。
你能告诉我如何在jQuery对象传入这种类型的函数时使用它吗?
答案 0 :(得分:1)
您只有el
的参数位置错误。这有效:
$("#foo").on("click", function() {
amountItems.speek('heey')
})
var amountItems = (function() {
return {
speek: function(el) {
alert(el);
}
}
}())
- 编辑 -
万一你想知道整个范围/私有变量是如何工作的:
$("#foo").on("click", function() {
amountItems.load('heey');
amountItems.speek();
})
var amountItems = (function() {
var el = ""
return {
load: function(str) {
el = str;
},
speek: function() {
alert(el);
}
}
}())
答案 1 :(得分:0)
执行此操作时:
var amountItems = (function(el) {
// var el = el;
return {
speek: function() {
alert(el)
}
}
}())
执行包装函数并为内部对象指定amountItems
您在调用此参数时不传递参数(el
),因此el
未定义。
amountItems
是一个名为speek
的方法的对象,除
执行此操作的正确方式是:
var amountItems = {
speek: function(txt) {
alert(txt);
}
};
$("#foo").on("click", function() {
amountItems.speek('heey')
})