这是我的代码:
$('ul.container_12 li ul li div ul li.icon_export').click(function (e) {
e.preventDefault();
var anchorHrefValue2 = $('a', this).attr('href');
var mycat2 = $(this).parents('li.current').attr('class').split(' ')[0];
window.location = anchorHrefValue2+"?active="+mycat2;
});
当我在Firefox中单击菜单时,似乎变量anchorHrefValue2
未定义,如果我在第3行和第4行之间添加alert('somthing');
anchorHrefValue2
返回正确的值,mycat2
返回价值menu
!我不知道它到底在哪里。
两个变量都已正确设置但不能一起设置。
两者都使用alert();
返回正确的值,但似乎未定义调用行window.location=...;
。
如果有人经历过与此有关的任何事情,请分享。我已经在启用JavaScript的不同浏览器中对此进行了测试。
顺便说一句,我有另一个这样的功能,对于具有相同目标的父菜单,工作得很好(只有选择器与第一个不同):
$('ul.container_12 li ul li').click(function (e) {
e.preventDefault();
var anchorHrefValue = $('a', this).attr('href');
var mycat = $(this).parent().parent().attr('class').split(' ')[0];
window.location = anchorHrefValue+"?active="+mycat;
});
答案 0 :(得分:3)
当我有一个类似的奇怪的bug,当我添加一个警告框时消失了,结果发现同一个事件(失去焦点的div)触发了两个不同的javascripts。 (我想添加警报让一个脚本有机会在另一个脚本被触发之前完成)。所以像CamelCamelCamel所说的异步行为,但即使没有服务器端代码,也可以获得(不需要的)异步行为。希望能帮助别人。
答案 1 :(得分:0)
ul.container_12 li ul li div ul li.icon_export
这是一个非常长且非常具体的选择器,如果你只改变一点HTML代码,这个选择器就会破坏。尝试简化它。对我来说,似乎.container_12 .icon_export
也可以。