【发布时间】:2014-12-22 21:32:45
【问题描述】:
出于某种原因,我不了解与 jQuery 单击处理程序相关的局部变量和全局变量的范围。当我单击按钮时,我得到“未定义”,但我希望它显示所单击按钮的类别。我该如何解决这个问题?
我已经设置了一个示例来说明我的困惑。在这里摆弄:http://jsfiddle.net/zvhsqeyn/
简单的html按钮:
<button class="hobbies">hobbies</button>
<button class="sledding">sledding</button>
<button class="personal">personal</button>
<button class="food">food</button>
一些 javascript 来处理单击按钮的事件。
var GLOBAL_CATEGORIES = ['hobbies', 'sledding'];
$(window).load(function() {
var categories = ['personal', 'food'];
// local categories
for (var i = 0; i < categories.length; i++) {
$('.' + categories[i]).click(function() {
alert(categories[i]);
return false;
});
}
// Global categories
for (var i = 0; i < GLOBAL_CATEGORIES.length; i++) {
$('.' + GLOBAL_CATEGORIES[i]).click(function() {
alert(GLOBAL_CATEGORIES[i]);
return false;
});
}
});
编辑: 收到反馈后,这里是正常工作的http://jsfiddle.net/zvhsqeyn/1/
【问题讨论】:
-
尝试在你的循环中提醒
i,看看会发生什么。这可能会让您了解实际发生的情况。 -
你为什么使用
$(window).load(function(){...})而不是jQueryready()或者干脆$(function({...}))? -
@GriffeyDog 也许他也想等待图像完成加载。
标签: javascript jquery event-handling scope