我在asp.net建立一个网站,刚开始学习javascript。
我尝试制作一个小动态菜单,因此当您点击标签时,它会显示并隐藏菜单。
在选项卡上,链接(a)有一个名为target_menu的属性,用于保存菜单名称。菜单有一个叫做menu的属性,当然它的名字就是。
在我的javascript中,在jquery.ready上我创建了每个选项卡的onclick事件,但每次单击一个选项卡时,它们似乎都使用了列表中最后一项的target_menu属性。
这是我的代码。
$(document).ready(function () {
var navItems = $("a[target_menu]");
for (var i = 0; i < navItems.length; i++) {
var t = $(navItems[i]).attr('target_menu');
//When this isn't commented it will display each item of the list correctly.
//alert(t);
//But when this is called its only giving me the last item in the list.
navItems[i].onclick = function () { EnableMenu(t.toString()); };
//$(navItems[i]).on('click', function () { EnableMenu($(navItems[i]).attr('target_menu')); });
}
var target = $("a.active[target_menu]").attr('target_menu');
ToggleMenu(target);
});
function EnableMenu(menu)
{
alert(menu);
$("a[target_menu]").removeClass('active');
$("a[target_menu='" + menu + "']").addClass('active');
ToggleMenu($("a[target_menu='" + menu + "']").attr('target_menu'));
}
function ToggleMenu(target)
{
$("[menu='" + target + "']").show();
$("[menu][menu!='" + target + "']").hide();
}
我认为它可能与传递变量t有关,并且每次都在循环中设置它,所以我添加了.tostring()但仍然遇到了同样的问题。 当我没有使用时,我一直没有被定义,而且我无法得到jquery(&#39;点击&#39; ......完全可以工作。
所以即使我在调用onclick时使用了.tostring(),它仍然似乎引用了t变量,并将其转换为字符串,而不仅仅是传递它。