2012-02-15 2 views
1

내가 무엇을하려하는지 부모님에게 배경 이미지를 제공하는 것입니다.부모님에게 배경 이미지를 제공 하시겠습니까?

그래서 메뉴 안에 하위 메뉴가 있습니다.

$('li.on').closest('ul').parent('li').css({ backgroundImage: 'url(/content/images/point.png)', backgroundRepeat: 'no-repeat' }); ; 

내가 메신저 상위 비트에서 잘못된 것 같아요 .. 내가 시도하고있는 JQuery와 무엇입니까?

이 메뉴는 ... 내가 테스트를 클릭하면

<div class="sideMenu2"> 
    <ul> 
     <li><a href>retail</a> 
      <ul class="subsideMenu2"> 
       <li ><a href="/portfolio/5/0">cabot circus</a></li> 
       <li><a href="/portfolio/6/0">st. stephen&#39;s</a></li> 
       <li><a href="/portfolio/7/0">silverburn</a></li> 
       <li><a href="/portfolio/8/0">the elements</a></li> 
      </ul> 
     </li> 
     <li><a href>sports &amp; leisure</a> 
      <ul class="subsideMenu2"> 
       <li class= "on"><a href="/portfolio/19/0">test</a></li> 
      </ul> 
     </li> 
    </ul> 

그래서, 스포츠와 레저가 배경을 받아야하지만 현재 소매입니다.

+1

, 그것은 무엇을하고 있는지 올바른 것입니다. "on"클래스는 스포츠 및 레저가 아닌 소매점에 있습니다. – Archer

+0

죄송합니다. 죄송합니다. – Beginner

답변

0

작성한 jquery 표현식의 시작 부분에 바로 $('li.on')이 있기 때문에 소매점에서 가져 오는 이유입니다. 소매 판매중인 경우 소매가가 올라갈 때 li을 선택합니다.

올바른 대상을 얻으려면 첫 번째 jquery 표현식을 가져와야합니다. 이는 클릭 핸들러에있는 경우 $(this)으로 변경하는 것처럼 간단 할 수 있지만 정확하게 수행하는 작업은 컨텍스트에 따라 다릅니다.

+0

죄송합니다. 테스트를 위해 텍스트를 클릭하면 리가 변경되지만 소매점에는 여전히 배경이 부여됩니다. – Beginner

+0

어쨌든'$ (this) '을 사용해 보셨습니까? 클래스를 변경하는 것과 위의 코드가 잘못된 위치를 선택하는 것과 같은 실행 조건 사이에 경쟁 조건이있을 수 있지만 확인했을 때 다시 설정해야합니다. 당신이 클릭 한 앵커 (당신이하는 것으로 가정)를 가지고 있다면, 당신이 항상 그 자리에 있다면 리를 다시 찾을 필요가 없습니다. – Chris

1

click 처리기를 바인딩하는 것을 잊어 버린 것 같습니다. 사용자가 앵커 (<a>)를 클릭 할 때 기본 동작을 방지하는 것도 중요합니다.

$('li.on a').on('click', function(event) { 
    event.preventDefault(); 
    $(this).closest('ul').parent('li').css({ 
    'backgroundImage': 'url(/content/images/point.png)', 
    'backgroundRepeat': 'no-repeat' 
    }); 
}); 

데모 : 당신이 우리를 표시 한 마크 업 http://jsfiddle.net/qHUT4/

관련 문제