2010-03-18 4 views
0

나는 이것에 관한 많은 기사를 보았지만 jQuery를 다룰 사람은 아무도 없었다. 그래서 내가 간다. 나는 http://javascript-array.com/scripts/jquery_simple_drop_down_menu/에서 기존의 응용 프로그램에 스크립트 버전을 구현하고있다. 그러나 나는 $ (document) .ready() 호출 내에서 첫 번째 메소드로 alert ('msg ...')를 추가하지 않으면 작동시키지 못한다.jQuery 기반 앱

로드 시간과 관련이없는 것 같습니다. 아무리 오래 기다리더라도 메뉴가 작동하지 않습니다. setTimeout()도 작동하지 않습니다. 그러나 알림()을 추가하면 매력처럼 작동합니다. 또한 Firebug를 통해 바인딩을 제대로 실행할 수 있습니다. 여기

var timeout = 500; 
var closetimer = 0; 
var ddmenuitem = 0; 

function jsddm_open() 
{ jsddm_canceltimer(); 
    jsddm_close(); 
    ddmenuitem = $(this).find('ul').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;}} 

$(document).ready(function() 
{ $('#jsddm > li').bind('mouseover', jsddm_open) 
    $('#jsddm > li').bind('mouseout', jsddm_timer)}); 

document.onclick = jsddm_close; 

답변

0

, 모든 요소 미래의 인스턴스가 알아서되도록 .live()를 사용합니다. 이것은 ajax 문제를 해결해야합니다.

$(document).ready(function() { 
    $('#jsddm > li').live('mouseover', jsddm_open); 
    $('#jsddm > li').live('mouseout', jsddm_timer); 
}); 
+0

$ .live()에 대해 완전히 잊어 버렸습니다. 그것도 작동합니다 (그리고 훨씬 깨끗합니다)! –

0

를 추가해보십시오 세미콜론 :

$('#jsddm > li').bind('mouseover', jsddm_open); 
$('#jsddm > li').bind('mouseout', jsddm_timer); 
+0

내 버전에는 세미콜론이 있습니다. 그것은 문제가되지 않습니다. –

+0

@ webjawns.com - 게시 한 내용에서 실제 코드를 게시하지 않으면 도움이되지 않습니다. –

+0

세미콜론이 없어도 해당 코드는 계속 작동합니다. 해결해야 할 개념적 문제가있었습니다. 코드는 그림을 그리기위한 것이 었습니다. 나는 지금 좋다. 나는 그것을 알아. 당신의 도움을 주셔서 감사합니다. –

0

해결 :이 크게 아약스에 의해 구동에 배치되고있는 사이트; 따라서 스크립트가 백그라운드에서 (즉, 메뉴가 여전히로드되는 동안) 처리 중이지만 DOM은 '준비 됨'으로 표시되었습니다.

메뉴 로더가이 작업을 한 직후에 초기화 기능을 배치합니다. 대신 .bind()를 사용

// DOES NOT WORK 
$(document).ready(function() { 
    loadMenus(); 
    menuInit(); 
}); 

function loadMenus() { 
    // load menu script... 
} 

// WORKS 
$(document).ready(function() { 
    loadMenus(); 
}); 

function loadMenus() { 
    // load menu script... 
    menuInit(); 
} 
관련 문제