2013-09-28 5 views
0

jQuery를 사용하는 데 문제가 있습니다.이벤트 버블 링 및 포함 된 div를 사용하는 jQuery

javascript로 바로 divs를 만들고 있는데,이 때문에 divs를 jQuery 함수와 바인딩 할 때 이벤트 버블 링을 사용해야합니다. 태그 몸체를 사용하여 즉시 작성중인 productId 특성으로 div를 찾기 시작합니다. 문제는 productId 속성을 사용하여 div 내부의 div 중 하나를 클릭 할 때 실행되지 않는다는 것입니다. 다른 포함 된 div를 포함하지 않는 div 부분에서만. ¿ 누군가 나를 도울 수 있습니까?

<div class="cartProduct" productId="2"> 
    <div class="names">Patatoes</div> 
    <div class="units">5</div> 
</div> 

$('body').click(function(event) { 
    if($(event.target).is('[productId]')) { 
    ... 
    } 
} 
+0

동적으로 생성되는 div의 클래스 이름을 알고 있습니까? 그리고 그들은 당신이 사용하고있는 jquery의 어떤 버전을 바꿀 것인가? – PSL

+0

아무리해도 이벤트 위임을 사용하고 필요한 div에 이벤트를 바인딩하면 이러한 검사를 피할 수 있습니다. 즉, '$ (문서) .on ('클릭 ','div [제품 ID] ', 기능() {...})' – PSL

답변

1

이것을 시도 :)

이것은 코드

$('body').on('click','[productId]',function(event) { 
    // do something 
}); 

데모 : http://jsfiddle.net/L5jg8/

이것은 .on() method의 위임 된 형태를 사용한다. 본문에 대한 클릭이 발생하면 jQuery는 두 번째 매개 변수의 선택기와 일치하는 요소에 있는지 확인합니다. (당신이 jQuery를 이전 버전을 사용하는 경우 당신은 .on() 대신 .delegate()를 사용해야합니다. 당신이 .live()을 시도해보세요 우스꽝스럽게 이전 버전을 사용하는 경우.) event.target 당신을 제공하기 때문에

기존 코드는 작동하지 않았다 이벤트를 시작한 DOM 요소 (즉, 클릭 한 하위 수준의 하위 항목) (테스트 한 div의 하위 항목 중 하나 일 수 있음).

+0

완벽한, 내 문제를 해결했습니다. 솔루션과 설명을 완벽하게. 대단히 감사합니다 !!! –