2010-05-27 2 views
2

jQuery에서 현재 보이는 요소를 저장하는 전역 변수 "currentSubNav"가 있습니다. 다음 코드는 "mouseenter"에서 실행됩니다.문이 이상하게 건너 뛰거나 평가되는 경우 JavaScript 및 jquery

상점 요소의 ID를 가져 오려면 해당 요소가 있는지 확인해야합니다. 존재하지 않는 경우, 새로운 가시 요소를 디폴트로 설정하십시오.

$('#mainMenu a').mouseenter(function() { 
    var newName = $(this).attr("id"); 
    if(newName == ''){ 
     var newName = "default"; 
    } 

그런 다음 새 요소가 현재 요소와 일치하는지 확인합니다. 그렇다면 리턴합니다. 그렇지 않은 경우 애니메이션을 수행하여 새 애니메이션을 가져옵니다.

if(newName == currentSubNav){ 
    return; 
    }else{ 
    $("div[name=" + currentSubNav + "]").animate({"left": "+=600px", "opacity": "toggle"}, "slow"); 
    $("div[name=" + newName + "]").css({"margin-top": "0"}); 
    $("div[name=" + newName + "]").fadeIn(2000); 
    $("div[name=" + currentSubNav + "]").animate({"left": "-=600px"}, 0); 
    currentSubNav = newName; 
    return; 
    } 
}); 

저는 현재 Chrome을 사용하고 있으며 개발자 도구에 따라 그 결과는 다릅니다.

문제 # 1

"$ (이) .attr ("ID ");" 문서의 주장대로 undefined가 반환되지 않습니다. 그것은 ""돌아 오는 것 같습니다. 하지만 위와 같이 if 문을 사용하면 명령문 전체를 건너 뜁니다. 중단 점을 설정했지만 실행을 일시 중지하지 않으므로 명령문이 평가되지 않습니다. 애니메이션 후

문제 # 2

하는 대신 돌아 간다 문장의 끝에 복귀를 사용하는 발생하고 "newName로 == currentSubNav"if 문에 대한 반환을 사용합니다. 그게 큰 문제는 아니지만 의도 한 행동이 아니란 것입니다.

나는 JavaScript가 처음인데, JavaScript가 어떻게 작동하는지에 대해 놓친 것 같습니다. 그러나 나는 어디에서 무엇을 찾을 수 없습니다. 어떤 도움이 필요합니까?

편집 : FireFox에서 작동하는 것 같습니다. (jQuery가 정의되지 않은 값을 반환하지는 않지만 ''을 반환합니다.) 현재이 문제는 Chrome 문제입니다. 더 관용적이다

var newName = $(this).attr('id') || 'default'; 

을, 그리고 당신이 대신 빈 문자열, 또는 그 반대의 널 얻고있는 경우를 처리합니다 다음과 같이

답변

1

나는 "newName로"의 지정을 변경 것 어쨌든 중요하지 않을 때.

"문제"중 일부는 코드가 실행되는 실제 방식보다 Chrome 디버거의 문제라고 생각합니다.

+0

+1은 newName 값 할당과 Chrome 디버거에 대한 설명입니다. 자주 (Mac 용) Chrome이 입력해야하는 블록을 건너 뛰었습니다. – user113716

+0

달콤한. +1 너무 빠른 답변이 사이트 에이 :) 너무 감사합니다. – tlm2021

관련 문제