2011-09-25 4 views
0

마지막 줄의 .add이 예상대로 작동하지 않으면 문서의 :first-child이 수정되었으므로 이동 객체의 :first-child 만 수정하면됩니다. 나는 내가 생각할 수있는 모든 것을 시도했다. 문제가 무엇인지 전혀 모른다.호버에 해당하는 객체에 jquery selector를 적용합니다.

jQuery.fn.img=function(background,param,repeat) 
    { $(this).css('background-image','url(/static/img/'+background+'.png') 
      .css('background-repeat',repeat) 
      .css('background-position',param+' top');} 

$('#sliding-door li').hover(function(e) 
{$(this).img('b1_middle_focus','left','repeat-x'); 
$(this).add(':first-child span').img('b1_left_focus','left','no-repeat');}, 

HTML :

<ul> 
      <li><a href="/href1"><span><span>Something</span></span></a></li> 
      <li><a href="/href2"><span><span>Another thing</span></span></a></li> 
</ul> 
+0

'.add()'? '.find()'를 의미하지 않습니까? – BoltClock

+0

고마워, 작동 했어. – titus

+0

좋아, 대답으로 올렸다. – BoltClock

답변

1

업데이트

내가 지금 뭘 하려는지를 참조하십시오.

를 무시

$('#sliding-door li').hover(function(e) { 
    $(this).img('b1_middle_focus','left','repeat-x'); 

    if ($(this).is(':first-child')) { 
     $(this).find('span').img('b1_left_focus','left','no-repeat'); 
    } 
}, ...); 

올드 답 : 한 서브 루틴 첫 번째 자식에 대한 테스트하는 동안 당신은 여전히 ​​모든 li들에 적용 할 수있는 호버 기능이 필요한 경우, if 문을 사용할 수 있습니다

: 당신이 $(this)의 첫 번째 자식의 span을 찾고 있다면

, 당신은 $(this).find()보다는 $(this).add()를 사용하는 의미

.add()은 문서 수준의 :first-child span 선택기와 일치하는 모든 요소를 ​​$(this) 개체에 추가합니다. 이는 실제로는 기대하지 않습니다. jQuery 문서를 참조하십시오 : http://api.jquery.com/add

+0

실제로 그것은 좋지 않습니다. 나는 맴돌 된 객체가 첫 번째 자식인지 테스트하고 싶습니다. 그 후 첫 번째 자식을 선택하지 마십시오. – titus

+0

그건 당신이 물었던 것과 다릅니다. HTML을 볼 수 있습니까? – BoltClock

+0

여기 두 예제가 어떻게 작동합니까? 첫 번째 것과 같이 동작하는 두 번째 예제가 있습니다. http://pastebin.com/hCB1vWSa – titus

관련 문제