2012-07-04 4 views
0

안녕 얘들 아 나는 나란히 배치되는 동일한 클래스 이름으로 몇 가지 요소를 가져갈 수있는 방법이 있는지 궁금 해서요 및 요소의 영역을 떠날 때 조치가 될 것입니다. 예를 들면 :한 항목에만 영향을 미치는 여러 요소를 가져가

<div class="hoverme"></div> 
<div class="hoverme"></div> 
<div class="hoverme"></div> 
<div class="hoverme"></div> 
<div class="hoverme"></div> 

들은 "hoverme"클래스의 전체 영역을 떠날 때 아래에만 호출합니다 "unhover"의 자바 스크립트.

$('.hoverme').live('mouseover mouseout', function(event) { 
      if (event.type == 'mouseover') { 

       if(!$("#stage1 td").hasClass("hover")) 
       { 
        $("#stage1 td").addClass("hover",200) 
       } 
      } 
      else { 

       //$("#stage1 td").removeClass("hover",200) 

      } 
     }); 

이 동작을위한 방법이 있습니까 ??

편집 : div의 모양이 단순한 정사각형이 아닙니다. 그것은 몇 개의 사각형으로 이루어져 있지만 결국 모양이 다소 이상합니다. 그래서 나는 다른 div로 내 div를 감쌀 수 없었다. 내가 JQuery와 UI를 사용하고

그러므로 내가 addclass 두 번째 매개 변수

+0

는 당신이 우리를 보여줄 수 [내가 jQuery를 UI addClass 구현에 대해 테스트했습니다 확인하려면 편집]? –

+0

두 번째 매개 변수를 .addClass()에 전달하는 이유는 무엇입니까? 문자열이나 함수 중 하나의 매개 변수 만 필요합니다. – Ian

+0

@JeffRobertDagala err 나는 # stage1이 (가) 걱정하는 가장 중요한 문제가 될 것이라고 말하고 싶습니다. 그것은 td 배경 색깔을 만드는 것입니다. ianpgall : jqueryui를 사용하고 있으므로 두 번째 매개 변수를 사용할 수 있습니다. 편집 된 게시물은 지금 – lilsizzo

답변

1

이전 답변이 혼합 된 것 같습니다.

  • mouseover와 mouseout 대신 mouseenter와 mouseleave를 사용하십시오.

  • 두 번째로, 은 래퍼 div를 사용합니다. 이것이 내가 만든 방법입니다. 하위 div 위로 마우스를 가져 가면 해당 부모가 어디에 있든 관계없이 상위 항목 위로 마우스를 가져갑니다. 부모 div의 mouseleave 이벤트는 더 이상 자식 위로 마우스를 가져갈 때까지 트리거되지 않습니다.

나는 절대적으로 십자가 모양으로 위치 다섯 개 자식 된 div와 크기가 0 인 래퍼 사업부를 작성했는데, 나는 당신이 당신이 필요 말하는 방식으로 작동합니다 생각합니다. Firefox 및 Chrome에서 테스트되었습니다.

$('.hoverme-wrapper').on('mouseenter mouseleave', function(e) { 
    if (e.type === 'mouseenter') { 
    if(!$("#stage1 td").hasClass("hover")) 
     $("#stage1 td").addClass("hover", 200) 
    } else { 
    $("#stage1 td").removeClass("hover", 200); 
    } 

어디 #의 스테이지 1 TD는

+0

그것은 단지 ("공중 선회") addClass ("공중 선회") 당신이 게시물을 제대로 읽는다면, 난 다른 매개 변수를 addClass ("호버", 200)했기 때문에 그것은 작동합니다. 한번 mouseleaves, 그것은 여전히 ​​stage1에 대한 다른 상태를 볼 수 td – lilsizzo

+0

내 테스트에 jQuery UI를 통합, 그리고 여전히 잘 작동합니다. 오류에 대한보다 명확한 정보를 제공 할 수 있습니까? 몇 가지 예제 CSS를 게시 하시겠습니까? 그것이 당신을 잘못 설정하는 당신의 위치 결정 방법일지도 모릅니다. –

+0

나는 그것을 작동시켰다. 아마 내가 오해했거나 더 일찍. 고맙습니다!! – lilsizzo

1

이 시도에 removeclass 수 있어요 : live() 당신이 on() 방법을 사용할 수 있습니다되지 않습니다 :

$('.hoverme').on('mouseover', function(event) { 
    $("#stage1 td").addClass("hover") 
}).on('mouseout', function() { 
    $("#stage1 td").removeClass("hover") 
})   

http://jsfiddle.net/jUmTt/

+0

이 형식에서'.on()'은'.live()'대체물이 아닙니다; 그러나이 코드가 문서 준비 함수에 있고 "호버 멘"클래스로 분류 된 요소가 파괴되거나 대체되지 않는 한 작동 할 것입니다. –

+0

나는 게시물을 편집 한 것처럼 ... addclass 및 removeclass에 다른 매개 변수를 추가하려고 시도합니다. – lilsizzo

1

할 일을 학생들이 hover 클래스를받는 요소 중 하나를 가리킬 때마다 의미합니까? : 즉,

var elements = $('.hoverme'); 
elements.on('hover', function(event) { 
    event.type == 'mouseover' ? elements.addClass('hover') : elements.removeClass('hover'); 
}); 

다른 방법으로, 마우스 오버 할 요소를 포장하기 위해 HTML을 재구성 할 수

<div class="hoverWrap"> 
    <div class="hoverme"></div> 
    <div class="hoverme"></div> 
    <div class="hoverme"></div> 
    <div class="hoverme"></div> 
    <div class="hoverme"></div> 
</div> 

을 그리고 hoverWrap에 호버 이벤트 리스너를 첨부 :이보십시오. 이것은 의미 론적으로 의미가 있습니다. 요소가 마크 업에서 서로 가깝다고해서 그것이 하나의 큰 요소로 취급되어야한다는 것을 의미하지는 않습니다.

1

는 나도 몰라,하지만 난 당신이이 일을하려는 생각 :

var timer; 
$('.hoverme').on('mouseenter mouseleave', function(e) { 
    if (e.type === 'mouseenter') { 
     clearTimeout(timer); 
     if(!$("#stage1 td").hasClass("hover")) { 
      $("#stage1 td").addClass("hover") 
     } 
    } else { 
     timer = setTimeout(function() { 
      $("#stage1 td").removeClass("hover"); 
     }, 300); 
    } 
}); 
+0

잘 작동하지 않습니다. adeneo addclass 및 removeclass에 대한 또 다른 매개 변수를 추가하십시오. jqueryui를 사용하고 있습니다 ... 옵션이 있습니다. 덕분에 – lilsizzo

0

사용 mouseleave 대신 mouseout.

관련 문제