onclick事件未传递正确的字符串

时间:2018-01-04 01:03:41

标签: javascript jquery html

我在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变量,并将其转换为字符串,而不仅仅是传递它。

0 个答案:

没有答案