2013-09-02 2 views
0

이 예에서 .zoom을 클릭하면 20 개 (루프에있는 항목의 양) .big_image divs를 주입합니다. 클릭하는 항목과 관련하여 하나를 삽입하고 싶습니다.각 루프 내의 Jquery 클릭 함수

$('.main img').each(function() { 
var img = this; 
$('.zoom').click(function() { 
    $(this).after('<div class="big_image"><img src="'+$(img).attr('src')+'"></div>'); 
}); 
}); 

여기 스크립트를 간단하게했습니다. 이상적으로는 질문과 관련이없는 다른 것들이 있기 때문에 가능한 경우 클릭 기능을 수정하는 방법을 알고 싶습니다. 감사!

편집 : 작업 예제 here.

줌 버튼은 갤러리의 처음 두 이미지 (왼쪽 상단)에 표시되어야합니다. 혼란 스럽다면, 매우 긴/큰 이미지에만 줌 버튼을 표시하려고합니다. 나는 또한 내가 setClass 기능을 분할해야한다고 알고 있어요하지만 아직 :)

+0

당신은 결합해서는 안'각 루프에서 클릭 .zoom' - 당신은 '() .closest $ (이 추가하지 않는 한 (같은 바인드 여러 번 일을 할 것입니다 .zoom ')) – Pete

+0

무엇이'.zoom'인지'.main' 무엇입니까, 당신도 HTML을 게시 할 수 있습니까? 위의 피트처럼 모든 클릭 내부 처리기를 넣지 않아도됩니다. – rps

+0

모든 이미지에 대해 모든 .zoom 요소에 클릭 수신기를 추가하고 있습니다. 좀 더 구체적인 도움을 줄 수 있도록 약간의 html을 보여주십시오. – Andy

답변

0

응답자가 어떤 이유로 든 답변을 삭제했습니다. 열쇠는 다음 내용입니다()

var img = this; 
$(this).next('.zoom').click(function() { 
    $(this).after('<div class="big_image"><img src="'+$(img).attr('src')+'"></div>'); 
}); 
0
$('.zoom').click(function(e){ 
    var imgURL= $(this).parents('.main').find('img').attr('src'); 
    $(this).after('<div class="big_image"><img src="'+imgURL+'"></div>') 
}); 

.main 컨테이너가 모두 img과의 직접적인 부모 인 경우가 .zoom 당신이

를 사용하는 방법을 배운하지 않은
var imgURL= $(this).siblings('img').attr('src'); 

루프 내부에 있어야합니다. 아래 코드를 수정 해보십시오.

var flag=false; 
$('.main img').each(function() { 
    var img = this; 
    $('.zoom').click(function() { 
    if(!flag) 
     $(this).after('<div class="big_image"><img src="'+$(img).attr('src')+'"></div>'); 
    flag=true; 
    }); 
}); 
+0

으로 질문을 업데이트했으며 예제 URL – daviestar

+0

PS를 업데이트했습니다. setClass 함수 밖에 (따라서 각 루프마다) 아무 것도하지 않습니다. – daviestar

+0

코드를 보면 20 비트의 .big_image div가 삽입되는 것을 볼 수 있습니다. – daviestar