2011-08-28 5 views
1

여기 내 코드입니다 : 파이어 폭스 변수 anchorHrefValue2 것 같아 내가 메뉴를 클릭하면 내가 선 3과 4 anchorHrefValue2 사이 alert('somthing');를 추가하는 경우, 정의되지이상한 문제는()

$('ul.container_12 li ul li div ul li.icon_export').click(function (e) { 
    e.preventDefault(); 
    var anchorHrefValue2 = $('a', this).attr('href'); 
    var mycat2 = $(this).parents('li.current').attr('class').split(' ')[0]; 
    window.location = anchorHrefValue2+"?active="+mycat2; 
}); 

올바른 값을 반환하고 mycat2menu 값을 반환합니다! 나는 그것이 어디서 오는 지 모르겠다. 두 변수가 모두 올바르게 설정되었지만 함께 설정되지 않았습니다.

모두 올바른 값을 alert();을 사용하여 반환하지만 줄을 호출하는 정의되지 않은 것 같습니다 : window.location=...;.

누구나 이와 비슷한 경험이 있으면 공유하십시오. 필자는 자바 스크립트가 활성화 된 다른 브라우저에서 이것을 테스트했습니다. 이것은

$('ul.container_12 li ul li').click(function (e) { 
    e.preventDefault(); 
    var anchorHrefValue = $('a', this).attr('href'); 
    var mycat = $(this).parent().parent().attr('class').split(' ')[0]; 
    window.location = anchorHrefValue+"?active="+mycat; 
}); 
+4

경고가 문제를 해결하면 즉, 문제는 비동기 동작 때문입니다. console.log를 사용하여 결과가 변경되는지 확인하십시오. 바로 거기에 Heisenbug입니다. – CamelCamelCamel

답변

3

경고 상자를 추가했을 때 비슷한 이상한 버그가 발생했을 때 같은 이벤트 (div 잃는 포커스)가 두 개의 다른 자바 스크립트를 트리거하는 것으로 밝혀졌습니다. (경고를 추가하면 다른 스크립트가 실행되기 전에 완료 할 수있는 기회가 주어 졌다고 생각합니다.) 따라서 CamelCamelCamel과 같은 비동기 동작은 서버 측 코드가 없더라도 비동기 동작을 얻을 수 있습니다. 희망은 누군가를 도왔습니다.

+0

이것은 오래된 질문이지만 바로 여기 문제였다. 감사 –

0

ul.container_12 li ul li div ul li.icon_export

:

그런데

, 나는 잘 작동 같은 목표 (만 선택기는 첫 번째와 다른)와 부모 메뉴에 대한이 같은 다른 기능을 가지고 매우 길고 매우 구체적인 선택기입니다. HTML 코드를 조금만 변경하면이 선택기가 중단됩니다. 단순화 해보십시오. 나에게 그것은 .container_12 .icon_export도 잘 작동하는 것 같다.

+0

thx 내가 조사해 보겠다 –