2012-10-21 33 views
34

मेरे पास कुछ jQuery फ़ंक्शंस वाला एक पृष्ठ है। जब मैं खोलें बटन एक छिपा पैनल बाहर स्लाइड पर क्लिक करेंhref = "#" पृष्ठ के शीर्ष पर जा रहे हैं - रोकें?

<a href="#" class="service">Open</a> 

: इस पृष्ठ के HTML इसलिए तरह दिखता है। JQuery स्वयं बहुत अच्छा काम करता है हालांकि जब मैं बटन पर क्लिक करता हूं तो यह मुझे पृष्ठ के शीर्ष पर भी ले जाता है।

क्या यह अपमानजनक व्यवहार है और मैं पृष्ठ के शीर्ष पर जाने से प्रत्येक href="#" को कैसे रोकूं।

नोट: मैं आईडी जोड़ सकता हूं और उस आईडी को निर्देशित करने के लिए href को बता सकता हूं। मैं इसे विभिन्न कारणों से नहीं करना चाहता (अनावश्यक कोड जोड़कर)।

उत्तर

50

अपने ईवेंट हैंडलर में, जोड़ने e.preventDefault(); (यह मानते हुए e घटना पकड़े चर का नाम है):

$('.service').click(function(e) { 
    e.preventDefault(); 
}); 
+0

आपको पृष्ठ के शीर्ष पर स्क्रॉल करने के ब्राउज़र डिफ़ॉल्ट को अनदेखा करने के लिए अपने कोड ब्लॉक के अंत में 'वापसी झूठी' का उपयोग करने की भी आवश्यकता हो सकती है। – bafromca

+2

@ बाफ्रोमा: बिलकुल नहीं। कॉलिंग 'रोकथाम' पर्याप्त है; जैसा कि इसके नाम का तात्पर्य है, यह होने से होने वाली डिफ़ॉल्ट कार्रवाई (एंकर के बाद और पृष्ठ के शीर्ष पर जा रहा है) को रोकता है। 'झूठी वापसी' यह भी करता है, और 'स्टॉपप्रॉपैगेशन' को कॉल करने के बराबर भी करता है, जैसा कि नाम से पता चलता है, घटना को मूल तत्वों के प्रचार से रोकता है; लेकिन यदि आप ऐसा करना चाहते हैं तो ब्राउज़र को पृष्ठ के शीर्ष पर स्क्रॉल करने से रोकें, 'वापसी झूठी' के लिए * कोई ज़रूरत नहीं है *। – icktoofay

19
<a href="#" onclick="return false;" class="service">Open</a> 

या

$(document).ready(function() 
{ 
    var a = $(".service"); 
    a.click(function() 
    { 

     return false; 

    }); 
}); 

या

$(document).ready(function() 
{ 
    var a = $(".service"); 
    a.click(function(e) 
    { 

     e.preventDefault(); 

    }); 
}); 

या

<a href="#" onclick="event.preventDefault();" class="service">Open</a> 
+1

@PHPSeeker मुझे खुशी है कि यह आपकी मदद करता है। –

+0

चौथे समाधान ने मेरी मदद की क्योंकि मुझे जेएस स्क्रिप्ट तक पहुंच नहीं है, धन्यवाद – FritzB

+0

मुझे इनलाइन समाधान भी पसंद आया :) –

0
$('service').click(function() { 
<your code> 
return false; 
}); 

return false 'एक' टैग के मानक व्यवहार को ओवरराइड करता है और जब क्लिक पेज के शीर्ष की ओर लौटने ब्राउज़र बंद हो जाता है।

47
<a href="#!" class="service">Open</a> 
+0

यह ठीक काम करता है। लेकिन क्या आप कुछ स्पष्टीकरण जोड़ सकते हैं कि यह क्यों काम करता है? – TheUknown

+1

मुझे लगता है कि यह एक एंकर वाक्यविन्यास है। आईडी = "!" के साथ तत्व पर स्क्रॉल करें लेकिन आईडी = "!" के साथ तत्व दस्तावेज़ और ब्राउज़र में मौजूद नहीं है स्क्रॉल नहीं करता है। https://www.w3.org/TR/html4/struct/links.html#h-12.2.1 – MyroslavN

+0

वाह! सबसे अच्छा उपाय! बहुत बहुत धन्यवाद। काश मैं इसे 10 बार ऊपर उठा सकता है! –