2013-06-15 2 views
0

모바일보기를위한 2 단계 아코디언 메뉴가 있으며 메뉴 항목 중 하나에 하위 항목이 없습니다. 자식 항목이있는 경우 부모님 ul에 대해 e.preventDefault();을 선언하므로 메뉴를 닫을 수 있지만 원하지 않는 자식 항목 (프로 시저)이없는 경우에도 영향을줍니다.올바르게 jQuery를 할당하는 방법 .off ('')

클릭 할 수 있지만 올바른 방법을 찾을 수 없도록 절차 항목을 대상으로 지정해야합니다. 이것은 (보다 작은 800 픽셀을 그것을 보거나하시기 바랍니다) 문제의 코드가 jQuery("ul.sf-menu > li").off('click');

jQuery("ul.sf-menu > li > a").on("click", function(e){ 
    if(jQuery(this).parent().has("ul")) { 
    e.preventDefault(); 
    jQuery("ul.sf-menu > li").off('click'); 
    } 

데모입니다 : http://jsbin.com/ohocer/1/edit

많은 감사합니다!

답변

0

문제는 .has()이 부울 값이 아닌 jQuery 컬렉션을 반환한다는 것입니다 (http://api.jquery.com/has/의 문서 참조). 당신이 a 태그를 preventDefault에려고하는 경우에

if (jQuery(this).parent().has("ul")[0]) { 

또는, 왜 그냥 아이들과 함께 사람의 href 속성을 제거 : 당신은 컬렉션에 요소가 포함되어 있는지 확인할 수 있습니까? 그런 다음 preventDefault을 모두 삭제할 수 있습니다.

+0

고맙습니다. href 속성은 CMS 시스템에 의해 채워지므로 href 속성을 제거 할 수 없으며 데스크톱 버전에서는 href 속성이 필요합니다. – user1258365

관련 문제