2012-12-07 20 views
22

मैं ट्विटर-बूटस्ट्रैप और पॉपओवर का उपयोग कर रहा हूं।ट्विटर-बूटस्ट्रैप और पॉपओवर के साथ स्क्रॉलिंग कैसे ठीक करें?

मुझे निम्न समस्या का सामना करना पड़ रहा है: जब उपयोगकर्ता किसी लिंक पर क्लिक करता है जो पृष्ठ के निचले हिस्से में एक पॉपओवर खोलता है, तो यह पहले पृष्ठ के शीर्ष पर स्क्रॉल करता है। इसके लिए उपयोगकर्ता को पॉपओवर को खोलने के लिए नीचे स्क्रॉल करने की आवश्यकता होती है। ट्विटर-बूटस्ट्रैप साइट पर डेमो में, मुझे यह नहीं दिखाई देता और मुझे आश्चर्य हुआ कि क्या मुझे इस मुद्दे पर सहायता मिल सकती है।

<div class="span1" style=" width: 60px; "> 
    <a href="#" class="example2" rel="popover" data-html="true" data-placement="left" data-content="&lt;a href = '/social/2lPdXV1KO4s/Bhangra indian Jingle Bells balle balle Merry Christmas'&gt;&lt;img src='http://i4.ytimg.com/vi/2lPdXV1KO4s/hqdefault.jpg'&gt;&lt;/a&gt;" data-original-title="Bhangra indian Jingle Bells balle balle Merry Christmas"> 
     <img src="http://graph.facebook.com/1236870349/picture"> 
    </a> 

    <div class="popover fade left in" style="top: 831px; left: 805.61669921875px; display: block;"> 
    <div class="arrow"></div> 
    <div class="popover-inner"> 
     <h3 class="popover-title">Bhangra indian Jingle Bells balle balle Merry Christmas</h3> 
     <div class="popover-content"> 
      <p><a href="/social/2lPdXV1KO4s/Bhangra indian Jingle Bells balle balle Merry Christmas"><img src="http://i4.ytimg.com/vi/2lPdXV1KO4s/hqdefault.jpg"></a></p> 
     </div> 
    </div> 
</div> 

उत्तर

35

यह प्रतीत अब आप लिंक के डिफ़ॉल्ट व्यवहार को रोकने के लिए, क्योंकि वे मंडराना/ध्यान केंद्रित करने पर पॉपओवर पॉपअप करने का विकल्प जोड़ा है की तरह। अभी लिंक सक्रिय हो जाएगा और चूंकि href "#" पर इशारा कर रहा है, यह आपको पृष्ठ के शीर्ष पर लाएगा। पुराने संस्करणों से पहले, यह स्वचालित रूप से इस डिफ़ॉल्ट को रोकने के लिए प्रयोग किया जाता था। इस

<a href="#" 
    class="btn btn-large btn-danger" 
    rel="popover" 
    data-content="And here's some amazing content. It's very engaging. right?" 
    data-original-title="A Title"> 
    Click to toggle popover 
</a> 

यहाँ एक काम कर JSfiddle है की तरह

<script> 
$("a[rel=popover]") 
    .popover() 
    .click(function(e) { 
     e.preventDefault(); 
    }); 
</script> 

एचटीएमएल के साथ:

आपका जावास्क्रिप्ट कोड कुछ इस तरह दिखना चाहिए। http://jsfiddle.net/hajpoj/KPU47/7/

संपादित करें: वैकल्पिक रूप से आप एक एंकर टैग के बजाय एक div इस्तेमाल कर सकते हैं और पूरे डिफ़ॉल्ट बात को रोकने करने की जरूरत नहीं।

<div 
    class="btn btn-large btn-danger popover-link" 
    data-content="And here's some amazing content. It's very engaging. right?" 
    data-original-title="A Title">Click to toggle popover 
</div>​ 

<script> 
    $(".popover-link").popover(); 
</script> 
8

मैं पॉपओवर साथ ठीक उसी मुद्दे का सामना करना पड़ा है और यह href = साथ href = "#" की जगह के लिए पर्याप्त था "जावास्क्रिप्ट: //"।

+2

यह पूरी तरह से काम किया। महान समाधान – PixelGraph

+0

@ पिक्सेलग्राफ यह नौकरी करता है, लेकिन समझने की कोशिश क्यों कर रहा है ... यह थोड़ा हैकी लगता है? – TimNguyenBSM

+1

यह jquery क्लिक ईवेंट वाले एक से अधिक सरल तरीके से प्रदान किए गए जेएस कोड को निष्पादित करके ब्राउज़र के डिफ़ॉल्ट व्यवहार को रोकता है। यह हैकी दिख सकता है लेकिन मेरी राय में यह बिल्कुल नहीं है। –

1

@ हजपोज ने जो कुछ भी बताया, उसके विपरीत यह बहुत ही महत्वपूर्ण है। साथ ही, यह ऐसा करने का एक अच्छा तरीका है क्योंकि आप पृष्ठ पर .popover तत्वों को गतिशील रूप से जोड़ सकते हैं और यह काम जारी रहेगा।

$('body').on('click', 'a[rel=popover]', function(e) { 
 
    e.preventDefault(); 
 
    return; 
 
}).popover({ 
 
    selector: 'a[rel=popover]' 
 
});
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac metus nisi. Nulla facilisi. In bibendum ultricies ultrices. Pellentesque sagittis, purus non venenatis mollis, nulla risus fermentum nisi, eget vulputate nulla felis nec mi. Donec rutrum 
 
    nisi sed turpis pulvinar non fermentum risus fringilla. Ut sapien tellus, venenatis sit amet venenatis quis, rhoncus et nulla. Nam augue nisl, consequat vitae convallis sit amet, egestas at ante. Aliquam fringilla viverra porttitor. 
 
</p> 
 
<p> 
 
    Aliquam ornare suscipit posuere. Phasellus ac turpis vitae elit sollicitudin condimentum. Duis massa purus, porttitor sed cursus eu, lacinia at velit. Nam ullamcorper mi ac sapien pretium mollis. Curabitur ante elit, euismod eget elementum condimentum, 
 
    semper a dui. Pellentesque luctus orci elit, ut mattis dolor. Quisque semper nisl eu enim cursus consectetur a in elit. Phasellus faucibus gravida elit vel lobortis. Donec vitae nisi ut libero sollicitudin sodales pretium at purus. Praesent vulputate 
 
    dignissim pulvinar. Nunc sit amet mauris a arcu pulvinar aliquam. Vivamus varius nisl elementum dolor posuere volutpat. Maecenas sed lectus tortor. Aenean sit amet dapibus arcu. 
 
</p> 
 
<p> 
 
    Aliquam posuere sagittis viverra. Aenean velit lorem, vehicula quis viverra vel, porttitor at est. Curabitur at molestie tortor. Quisque at justo eu lacus accumsan aliquam. Ut auctor dui et augue posuere eleifend. Aliquam erat volutpat. Nunc enim enim, 
 
    ullamcorper at scelerisque eu, cursus sit amet lectus. Quisque ac augue erat, vitae tempus diam. Nunc at erat pulvinar lectus vestibulum congue. Vivamus lorem leo, tristique non tempus a, laoreet sit amet ligula. Maecenas tristique vulputate ante, nec 
 
    aliquet enim lobortis vel. Morbi convallis quam sed tellus consectetur hendrerit. Vestibulum vel elit at risus tempor posuere. Vivamus ultricies molestie feugiat. Sed iaculis eros massa. Mauris ac nunc orci. 
 
</p> 
 
<p> 
 
    Aliquam erat volutpat. Pellentesque volutpat iaculis tortor vel hendrerit. Cras sapien orci, fermentum id molestie vel, feugiat in tortor. Quisque vitae felis non tellus volutpat aliquet luctus sit amet felis. Pellentesque gravida tempus turpis, eu lobortis 
 
    eros rutrum eu. In malesuada ultrices leo, eu pretium quam molestie quis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac risus eros. Ut posuere lobortis magna, at blandit mauris tristique ut. Suspendisse 
 
    volutpat mollis elit non sagittis. Nam in dictum felis. Maecenas dolor turpis, aliquet vel vestibulum vel, hendrerit non tortor. In pharetra nulla nec arcu rutrum ut commodo tortor facilisis. Curabitur congue feugiat felis vel sollicitudin. Proin in 
 
    mollis dolor. Nulla mattis, turpis vestibulum vehicula blandit, tortor neque posuere diam, sed tempus neque odio id diam. 
 
</p> 
 
<p> 
 
    Vestibulum non quam et elit consequat pellentesque sed at leo. Pellentesque iaculis, purus sit amet cursus imperdiet, orci mi consectetur sapien, sed sodales dui lectus vel enim. Curabitur ac arcu at lectus dictum luctus. Duis et aliquet eros. Suspendisse 
 
    mi mi, porta at elementum pulvinar, pulvinar eu elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce molestie mollis neque, et elementum odio dapibus sed. Nulla blandit sollicitudin quam semper dictum. 
 
    Pellentesque rutrum rhoncus lacus et facilisis. Sed mattis felis sit amet neque viverra ullamcorper. Fusce volutpat quam scelerisque nisi dignissim vel congue nulla sodales. 
 
</p> 
 

 

 
<a href="#" class="btn btn-large btn-danger" rel="popover" data-content="And here's some amazing content. It's very engaging. right?" data-original-title="A Title"> 
 
    Click to toggle popover 
 
</a>

0

जोड़ने onclick = "return false;" आपके लिंक पर; यह ब्राउज़र को "#" लिंक का पालन करने से रोकता है:

2

बस इस कोड का उपयोग करें। कोई अतिरिक्त div, class या जो कुछ भी आवश्यक है।

$("a[data-toggle=popover]").popover().click(function(e) { 
     e.preventDefault(); 
});