2012-03-08 19 views
7

इम मूल रूप से HTML, सीएसएस और jQuery और im एक उपयोगकर्ता इससे दूर क्लिक करता है div बंद करने में समस्या आ रही के साथ एक सरल लटकती मेनू बनाने की कोशिश कर।छुपा DIV जब इससे दूर पर क्लिक

मैं stopPropagation की कोशिश की और दस्तावेज़ की जाने वाली कार्रवाई के लिए बाध्य क्लिक करने पर, वे या तो काम नहीं करते या मैं पता नहीं कैसे उन्हें इस्तेमाल करने के लिए है है। वैसे भी नीचे

एचटीएमएल कोड पर एक नज़र

<div id="optionsMenu"> 
    <a href="account.php?edit=info">Account Settings</a>  
</div> 

JQuery

$('.options').click(function(){ 
    if($('#optionsMenu').css("display") == 'none'){ 
     $('#optionsMenu').slideDown("fast"); 
    } 

    else{ 
     $('#optionsMenu').slideUp("fast"); 
    } 
}); 

$('#optionsMenu').blur(function(){ 
    $('#optionsMenu').css("display","none"); 
}); 

किसी भी मदद के लिए बहुत appriciated किया जाएगा है।

उत्तर

9

आप stopPropagation उपयोग करना चाहिए:

$(body).click(function(e) 
{ 
    $('#optionsMenu').slideUp('fast'); 
}); 
$('#optionsMenu').click(function(e) 
{ 
    e.stopPropagation(); 
}); 
+0

मुझे आपका जवाब पसंद आया क्योंकि यह आसान था और इसे समझना आसान था –

3

आप शायद on() इस्तेमाल कर सकते हैं,:

$('body').on('click', function(e){ 
    if ($(e.target).not('#optionsMenu')){ 
     $('#optionsMenu').slideUp('fast'); 
    } 
}); 

ऊपर अभी तक जांच नहीं की है, लेकिन ऐसा करना चाहिए, मैं काम लगता है।

+0

उत्तर के लिए धन्यवाद, लेकिन यह सिर्फ मेनू स्लाइड नीचे उसके बाद फिर से ऊपर की ओर स्लाइड बना देता है, इसलिए इसकी क्या तलाश में im नहीं। –

+1

हां, आपने अभी भी 'e.stopPropagation();' ईवेंट-हैंडलर में उपयोग किया है जो '# विकल्पमेनू' दिखाता है। डेमो देखें। –

+0

धन्यवाद मैं अब समझता हूं, उस तरह का काम किया। –