2011-03-04 142 views
0

我有一个jQuery的递归太多的问题,并在IE中弹出堆栈溢出,它可以是什么?太多递归jquery

这里我的代码

HTML:

<div id="leiki_tabs"> 
<div id="leiki_container"> 
<ul id="leiki_menu"> 
    <li style="width:100px;border-right:1px dotted #333;border-bottom:1px dotted #333;text-align:center;"><a id="title_leiki_panel_1" href="#" rel="leiki_panel_1">Today</a></li> 
    <li style="width:100px;border-right:1px dotted #333;border-bottom:1px dotted #333;text-align:center;"><a id="title_leiki_panel_2" href="#" rel="leiki_panel_2">This Month</a></li> 
    <li style="width:100px;border-right:1px dotted #333;border-bottom:1px dotted #333;text-align:center;"><a id="title_leiki_panel_3" href="#" rel="leiki_panel_3">Archive</a></li> 

    <li style="width:270px;"/> 
    <li id="leiki_logo_tab_menu"><a href="#" rel="leiki_panel_5" ><img id="leiki_logo" style="border:0px;" src="leikiLogo_onMouseOver.png"/></a></li> 
</ul> 
</div> 

<!--Panel Contents Start--> 
<div id="leiki_panel_1" class="leiki_panel"> 
    <ul class="leiki_panel_ul"> 
    <li class="leiki_panel_li"><div class="leiki_left"><Article 1</div></li> 
    <li class="leiki_panel_li"><div class="leiki_left">Article 2</div></li> 
    <li class="leiki_panel_li"><div class="leiki_left">Article 3</div></li> 
    <li class="leiki_panel_li"><div class="leiki_left">Article </div></li> 
    <li class="leiki_panel_li"><div class="leiki_left">Article 5</div></li> 
    </ul> 
</div> 

的Javascript:

var opened_one = null; 
$(function(){ 
    $('div[id*="leiki_panel"]').hide(); 
    $('div[id="leiki_panel_1"]').show(); 
    $('#title_leiki_panel_1').addClass("leiki_menu_highlight"); 
    $('#leiki_menu a').mouseenter(function(){ 
     $('a[id*="title_leiki_panel"]').removeClass("leiki_menu_highlight"); 
     if(opened_one==null){$('div[id="leiki_panel_1"]').hide();} 
     $(opened_one).hide(); 
     var link_rel = $(this).attr('rel'); 
     $('div#' + link_rel).show(); 
     opened_one = $('div#' + link_rel); 
     var tab = "title_" +link_rel; 
    }).mouseleave(function(){ 
     var link_rel = $(this).attr('rel'); 
     var tab = "title_" +link_rel; 
     if(tab=="title_leiki_panel_1" || 
     tab=="title_leiki_panel_2" || 
     tab=="title_leiki_panel_3" || 
     tab=="title_leiki_panel_4" || 
     tab=="title_leiki_panel_5"){ 
     $("#"+tab).addClass("leiki_menu_highlight");} 
    }); 
}); 

它的工作我的桌面上没有问题,但是这是由我们的客户拥有了它给我的测试服务器上这个错误太多递归。我不能发布测试服务器的地址,但可能在私人消息。

干杯

+0

我们可以看到一些例如HTML,这个JS运行呢?它会在某个地方进入一个循环,但很难在没有看到HTML的情况下知道其中的位置。 – 2011-03-04 10:33:05

+0

问题在于它集成在5000行报纸的页面中,它可以给我提供信息:s – Patrice 2011-03-04 10:41:45

+0

您可以在代码中添加一些调试吗?它看起来好像页面中有大量元素,并且正在添加到堆栈以执行某些任务。或者你能否提供演示页面,以便我们看看? – 2011-03-04 10:33:34

回答

0

尝试改变$('#leiki_menu a').mouseenter(function()和类似到:

$('#leiki_menu').delegate('a', 'mouseenter', function(){ 
    // ... 
}).delegate('a', 'mouseleave', function(){ 
    // ... 
});