我有循环和jQuery点击功能的功能,我想,点击后,执行特定的功能。 a.id类很重要,所以像jQuery点击定义一样。点击具有特定id的元素后,我想执行特定的功能。可以改变的只是功能b?
var a = {
id: { "id1": function () { console.log(1) }, "id2": function () { console.log(2) }, "id3": function () { console.log(3) } },
b: function () {
$this = this;
for (v in $this.id) {
$("#" + v).click(function () {
$this.id[v]();
});
}
}
}
点击元素后,我想看id1 = 1, id2 = 2, id3 = 3
。但是这段代码为每个元素写入值3。这个例子很简单。问题是我知道的变量引用,但我无法找到正确的解决方案。感谢
答案 0 :(得分:1)
将其包裹在IFFE功能中。在此处阅读有关范围和IIFE的更多信息http://benalman.com/news/2010/11/immediately-invoked-function-expression/。
我提供了一个与您的问题相关的示例: http://jsfiddle.net/rtmeo4nx/3/
function() {
var $this = this;
for (var v = 0; v <= 4; v++) {
(function() {
var i = v;
$("#v" + i).on("click", function(e) {
e.stopPropagation();
alert('hi' + i);
});
})();
}
}