2013-06-06 6 views
0

어떻게이 작업을 수행 할 수 있습니까?대상의 부모를 얻는 방법

대상의 부모가 .form_contact_div이면 console.log ('열린 양식 유지');

코드 내가 사용하고 있지만 if (else if) 조건에서만 작동합니다. if 및 else.

코드 : 당신이 당신의 코드를 사용하는 것이 더 좋은 당신의 taget으로 클릭 된 요소를 얻을 필요가 있기 때문에

var target = $(this); 

처럼 와 e.taget을 대체 할

jQuery("body").click(function(e) { 

    var target = jQuery(e.target); 
    console.log(target); 

    if(jQuery(target).parents('#contact-btn-div').length 
     && jQuery('#contact-btn-div').hasClass('close')) { 
     console.log('keep open btn'); 
     jQuery("#form_contact_wrapper").animate({'left': '0px'}); 
     jQuery("#contact-btn-div").removeClass('close'); 
    } 
    else if(jQuery(target).parent().is('.form_contact_div')) { 
     console.log('keep open form'); 
     jQuery("#form_contact_wrapper").animate({'left': '0px'}); 
    } 
    else{ 
     console.log('keep close'); 
     jQuery("#form_contact_wrapper").animate({'left': '-472px'}); 
     jQuery("#contact-btn-div").addClass('close'); 
    } 
}); 
+0

IE를 사용하고 있습니까? – Amit

+1

문서 준비 함수에서 코드를 래핑하고'$ '를 param으로 전달하면 많은 바이트를 절약 할 수 있으며 더 깨끗해진다. – elclanrs

+0

_note_ :'target' 변수는 이미'jQuery'에 의해 반환되므로, 다시 jQuery에 전달할 필요가 없습니다 :'jQuery (target)'. –

답변

0

시도 이 같아야합니다

jQuery("body").click(function(e) { 

    var target = $(this); 
    console.log(target); 

    if(target.parent('#contact-btn-div').length 
     && jQuery('#contact-btn-div').hasClass('close')) { 
     console.log('keep open btn'); 
     jQuery("#form_contact_wrapper").animate({'left': '0px'}); 
     jQuery("#contact-btn-div").removeClass('close'); 
    } 
    else if(target.parent().is('.form_contact_div')) { 
     console.log('keep open form'); 
     jQuery("#form_contact_wrapper").animate({'left': '0px'}); 
    } 
    else{ 
     console.log('keep close'); 
     jQuery("#form_contact_wrapper").animate({'left': '-472px'}); 
     jQuery("#contact-btn-div").addClass('close'); 
    } 
}); 
+0

이 오류가 잡히다 TypeError : Object # 메서드 'parents'가 없습니다 – RIK

+1

죄송합니다. 편집을 참조하십시오. 부모가 아니어야합니다. – Gautam3164

0

편집 된 코드.

<div id="contact-btn-div" class="close" style="width:300px; height:200px; border:1px solid #666; background-color:#F60;"> 

<div style="width:200px; height:100px; border:1px solid #0FC; background-color:#9CC;"></div> 
</div> 

와 자바 스크립트

,

$(function(){ 
$("body").click(function(e) { 

var target = $(e.target); 
console.log(target); 

if(target.parent('#contact-btn-div').length 
    && $('#contact-btn-div').hasClass('close')) { 
    console.log('keep open btn'); 
    $("#contact-btn-div").removeClass('close'); 
} 

}); 
}); 

나는 당신이 필요로하는 것을 얻을 것이라 생각합니다. 건배 :).

+0

@ Gautam3164 : $ (this)가 BODY Object를 제공합니다. 어디서나 클릭 할 때마다 논리가 실패하는 이유입니다. $ (e.target)만이 여기에 있습니다. 건배. –

관련 문제