2010-03-14 3 views
1

매초마다 div를 대체하는 Ajax 요청을 수행하는 페이지가 있습니다. 이 div에는 하이퍼 링크도 있습니다.Ajax가 마우스 커서 아래의 하이퍼 링크를 "선택 해제"

사용자가 하이퍼 링크 중 하나를 클릭하려고해도 작동하지만 링크 위로 커서를 이동하면 커서를 움직이지 않고 잠시 기다리면 하이퍼 링크에는 더 이상 "마우스 오버"의사 스타일이없고 if 그들이 잘못된 시간에 클릭하면 링크가 작동하지 않습니다.

div를 업데이트하지 않거나 링크의 "마우스 오버"상태로 복원 할 수있는 방법이 있습니까?

답변

0

저는 최선의 방법은 전체 컨테이너 div를 파괴하고 재생성하는 대신 링크를 개별적으로 업데이트하는 것이라고 생각합니다. 이렇게하면 링크가 그런 식으로 행동하게하는 "깜박임"이 제거됩니다.

+0

div에는 업데이트가 필요한 다른 항목이 포함되어 있으며 href가 링크, 때로는 스타일이나 내용을 변경할 수있는 유일한 것은 아닙니다. 변경합니다. –

+0

@thealliedhacker : 예, 깜박임없이 스타일, innerHTML 등을 계속 변경할 수 있습니다. s div의 다른 요소에 대해 개별적으로 업데이트하는 것이 좋습니다. 전체 div를 삭제하고 다시 만들 때 발생하는 문제에 대한 쉬운 해결 방법이 없다고 생각합니다. 브라우저가 mouseMove 이벤트에서만 "호버"의사 스타일에 반응하는 것처럼 보입니다 ... 링크를 다시 만들 때 움직이지 않기 때문에 의도 한대로 동작하지 않습니다. –

0

사용자가 클릭 할 수있는 링크로 div를 업데이트하는 것이 좋지 않은 것처럼 들리 겠지요 ... 콘텐츠가 실제로 새로 고침 될 때마다 변경되지 않으면 동일한 콘텐츠) 불필요하게 깜박일뿐만 아니라 알아 차린 것처럼 링크가 오작동을 일으킬 수 있습니다.

div의 이전 내용과 새 내용을 비교하여 내용을 수정하고 내용이 변경되지 않은 경우에는 아무 작업도하지 않아도되지만 변경하면 바로 전에 변경된 내용이 사용자에게 상당히 혼란 스럽습니다. 그들은 클릭한다. 다른 콘텐츠가있는 링크를 업데이트해야하는 경우 페이드 아웃 또는 페이드 인 또는 다른 것과 같은 일종의 애니메이션 (실제 변경시)을 구현하는 것이 좋습니다. 이는 사용자에게 목표로하는 링크가 있는지 알려주는 것입니다. 사라질 것입니다. (나는 오래된 콘텐츠의 매우 느린 페이드 아웃 (1-2 초)과 매우 빠른 페이드 인 (50-200 ms)을 제안합니다.

마우스를 움직이지 않으면 호버 스타일이 작동하지 않습니다. 브라우저 동작이므로 js 나 다른 멋진 트릭을 사용하여 요소를 움직이면 작동하지 않을 수도 있고 노력하지 않을 수도 있습니다. 그리고 컨텐츠를 업데이트 할 때만 업데이트하면 실제로 링크가 항상 어쨌든 같은 지점에있을 수는 없습니다 ...

관련 문제