2013-06-06 8 views
0

Как это сделать.Как получить родителя цели

Если родитель цели является .form_contact_div, тогда console.log ('keep open form');

код, который я использую, но он не работает (else if) условие работает только для if и else.

код:

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

Если вы завершаете свой код в функции готовности документа и передаете '$' как параметр, вы можете сохранить кучу байтов, плюс он будет выглядеть более чистым. – elclanrs

+0

_note_: переменная 'target' уже возвращается' jQuery', поэтому нет необходимости передавать ее в jQuery еще раз: 'jQuery (target)'. –

ответ

0

Попробуйте заменить e.taget с это как

var target = $(this); 

Потому что вам нужно, чтобы получить Clicked элемент в качестве ТАГЕТ то лучше использовать это и код должен быть таким

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

Я получаю эту ошибку, используя этот Uncaught TypeError: Object # не имеет метода «родители» – 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> 

And The Javascript,

$(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 каждый раз, когда вы щелкаете в любом месте, вот почему ваша логика потерпит неудачу. $ (e.target) - единственный вариант здесь. Приветствия. –

Смежные вопросы