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 디버거에 대한 설명입니다. 자주 (Mac 용) Chrome이 입력해야하는 블록을 건너 뛰었습니다. – user113716
달콤한. +1 너무 빠른 답변이 사이트 에이 :) 너무 감사합니다. – tlm2021