1
我在调试这个脚本时遇到问题,最初的问题是“$()。ready不是函数”,所以我包装了这部分脚本:
$(document).ready(function()
{ $('#jsddm > li').bind('mouseover', jsddm_open);
$('#jsddm > li').bind('mouseout', jsddm_timer);});
document.onclick = jsddm_close;
最多像这样
(function($) {
$(document).ready(function() {
$('#menu-main-nav > li').bind('mouseover', jsddm_open);
$('#menu-main-nav > li').bind('mouseout', jsddm_timer);
});
document.onclick = jsddm_close;
}) (jQuery);
但我现在获得了$(本).find是没有上线的功能 “jsddm_close();” - 任何帮助表示赞赏,我敢肯定这很简单。完整的脚本如下:
<script type="text/javascript">
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;
function jsddm_open()
{ jsddm_canceltimer();
jsddm_close();
ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');}
function jsddm_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}
function jsddm_timer()
{ closetimer = window.setTimeout(jsddm_close, timeout);}
function jsddm_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
(function($) {
$(document).ready(function() {
$('#menu-main-nav > li').bind('mouseover', jsddm_open);
$('#menu-main-nav > li').bind('mouseout', jsddm_timer);
});
document.onclick = jsddm_close;
}) (jQuery);
</script>
你为什么不换行所有的JavaScript成匿名函数?这样你就可以通过''''**加上**保证'jQuery'的引用,而且不会破坏全局对象。 – jAndy 2011-03-15 19:59:53
你在Firebug中看到了什么?同样的错误? – Jakub 2011-03-15 20:01:05
存在js代码与jQuery混淆的问题。把'document.onclick = jsddm_close;'改成'$(document).click(function(){jsddm_close(this);});'并在'jsddm_close'中接收'this'作为参数 – 2011-03-15 20:02:27