为什么我不能让它工作?
我想从菜单中获取index(),并在哈希值发生变化时发出alert()值。
警报未出现。
$('#menu li a').click(function() {
var index = $(this).parent().index()+1;
});
$(window).bind('hashchange', function () { //detect hash change
var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
alert(index);
});
你能告诉我我做错了吗?
答案 0 :(得分:2)
这是一个范围问题,index
变量是它声明的函数的本地变量,因此您无法从其他函数访问它。将声明移动到外部作用域,它将起作用:
var index; // declare the variable
$('#menu li a').click(function() {
// Assign the value, notice the `var` keyword isn't there anymore
index = $(this).parent().index() + 1;
});
$(window).bind('hashchange', function() { //detect hash change
var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
// Get the value
alert(index);
});
我建议您阅读JavaScript中的范围界定方法 - JS Garden有一个不错的概述。
答案 1 :(得分:0)
变量index
与调用alert
的范围不同。
您可以在两个函数之前将其声明为全局变量:
var index;
然后删除第一个函数中的var
关键字:
$('#menu li a').click(function() {
index = $(this).parent().index()+1;
});
答案 2 :(得分:0)
var index;
$('#menu li a').click(function() {
index = $(this).parent().index()+1;
});
$(window).bind('hashchange', function () { //detect hash change
var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
alert(index);
});