我正在使用 jQuery 设计一个可扩展的列表(我是 jQuery 的新手)。可扩展列表在 IE 上运行良好,但在 Firefox/Chrome 上运行良好。
在调试时,我发现对于 firefox/chrome,我可以得到alert('hiiii prepare ORIGINAL')
,但在那之后什么也没有。更多的调试表明function(event)
没有被执行。
代码哪里出错了?这不是完全由我准备的代码,而是从网上获得并为我的目的进行了修改。原始代码的功劳归于其作者。
我正在使用 Firefox 版本 20.0.1 和 IE 版本 9,jQuery 版本 1.4.2。
js代码:
function prepareList() {
alert('hiiii prepare ORIGINAL');
$('#expList').find('li:has(ul)').click(function (event) {
alert('inside');
if(this == event.target) {
$(this).toggleClass('expanded');
$(this).children('ul').toggle('medium');
}
//return false;
}).addClass('collapsed').children('ul').hide();
//Create the button functionality
$('#expandList').unbind('click').click(function () {
$('.collapsed').addClass('expanded');
$('.collapsed').children().show('medium');
})
$('#collapseList').unbind('click').click(function () {
$('.collapsed').removeClass('expanded');
$('.collapsed').children().hide('medium');
})
// alert('END prepare ORIGINAL');
};
$(document).ready(function () {
prepareList();
});
CSS:
#expList ul, li {
list-style: none;
margin:0;
padding:0;
cursor: pointer;
}
#expList p {
margin:0;
display:block;
}
#expList p:hover {
background-color:#121212;
}
#expList li {
line-height:140%;
text-indent:0px;
background-position: 1px 8px;
padding-left: 20px;
background-repeat: no-repeat;
}
/* Collapsed state for list element */
#expList .collapsed {
background-image: url(../../tree/img/collapsed.png);
}
/* Expanded state for list element
/* NOTE: This class must be located UNDER the collapsed one */
#expList .expanded {
background-image: url(../../tree/img/expanded.png);
}
#expList {
clear: both;
}
编辑 1:
我在这里发布了一个小提琴(感谢 Rocket Hazmat 的创建)http://jsfiddle.net/vrnqA/2/。在这个小提琴中,当我们单击图像时,列表会展开和折叠。它在 IE 中以同样的方式发生,但在 Firefox 中则不然。这是与 jQuery 版本有关的问题吗?(因为我是 jQuery 的新手,我正在谷歌上搜索如何更新版本,但如果有人遇到过任何此类问题,请告诉我,因为它会很有帮助)
编辑 2:
升级 jQuery 到1.9.1 没有帮助。问题仍然存在。
编辑 3: “事件”似乎是导致 FireFox 问题的原因。当我发出警报时alert('event: '+event)
在 js 中,我能够在 IE 中正确看到警报,但在 FirerFox 中,没有出现此警报。因此,FireFox 似乎无法识别该事件。
编辑4:
刚刚在我朋友的建议下下载了firebug,它显示错误:
ReferenceError:未定义事件
任何指针?
编辑 5
Hi Friends,非常感谢所有的支持。问题不在于 jQuery,而在于使用我的代码的 UI 开发团队......不得不分析他们的 UI 以发现错误......真的感谢所有的支持......