2009-06-17 2 views
-1

이것은 내가 어디에서 왔는지 알기에 유용 할 수 있습니다. Jquery nested each problem동적으로 생성 된 여러 개의 DOM 요소를 어떻게 움직이게합니까?

나는이 코드 페이지로 divs를 추가하고 :

jQuery("#list").append(
    jQuery("<div>") 
     .attr("id", "Entry") 
     .html(html) 
); 

html 일부 텍스트와 앵커를 포함하는 단지 문자열입니다.

새 div를 애니메이션화하려고합니다. #Entry ID를 가진 div가 여러 개 있습니다. 그 중요한 경우,

jQuery("#Entry").hover(function(){ 
    jQuery(this) 
    .animate({ 
     width:"50%", 
     fontSize: "30px", 
     opacity: 0.3, 
     borderwidth: "15px" 
    }, 500); 
}); 

은 위의 내 jQuery(document).ready(function(){ } 기능에 있습니다

여기 내 코드입니다.

답변

1

우선 id가 1이 (가) <div> 이상인 경우 잘못 처리하는 것입니다. id 속성은 문서에서 고유해야합니다 (must). id이 1 개 이상있는 요소는 Javascript가 발생하지 않기 때문에 건방진 상태가됩니다. 동일한 주민 등록 번호를 가진 두 명의 사람과 동등합니다. :) 요소 그룹에 관해서는 공통된 모범 사례는 모든 수업을 제공하고 그런 식으로 선택하는 것입니다.

이전에는 원하는대로하는 live 함수를 조사해야합니다. 기본적으로 문서에서 코드를 실행할 때 문서의 현재 상태에 대해 실행 중입니다. 즉, 해당 시점에있는 요소 (제공된 선택기와 일치하는 요소) 만 제공 한 이벤트에 바인딩됩니다. 이 문제를 해결하기위한 방법으로 live 함수가 만들어졌습니다. 또 다른 해결책은 <div>을 새로 추가 한 후에 바인딩 코드를 다시 실행하는 것이지만 hover을 수행해야 할 mouseovermouseout 이벤트를 지원하는 live을 사용하는 것처럼 깨끗하지는 않습니다.

+0

라이브는 호버링을 지원하지 않습니다. 마우스 오버, 마우스 아웃을 지원합니다. 그러나 내 div에 앵커가 있습니다. 따라서 앵커를 따라 움직이면 마우스 오버 이벤트가 발생하여 거품이 나오기 때문에 어리석은 깜박임이납니다. 많은 사람들이 Google 검색에서이 곤경에 처한 것으로 보이며 라이브는 마우스 오버, 마우스 센터 또는 마우스 제거를 지원하지 않으므로 마우스 오버로 남았습니다.하지만이 문제가 있습니다. 흠. –

+0

그 경우, 내가 말한 대안을 수행하십시오. div를 추가 한 후 코드를 실행하십시오. –

0

live()는 최신 jQuery의 사용자 정의 이벤트를 포함한 모든 이벤트를 지원합니다 ...

관련 문제