2012-03-31 16 views
232

मैं ट्विटर बूटस्ट्रैप टूलटिप्स उपयोग कर रहा हूँ जावास्क्रिप्ट के साथ निम्नलिखित की तरह:गतिशील रूप से बनाए गए तत्वों के लिए मैं ट्विटर बूटस्ट्रैप टूलटिप्स को कैसे बांधूं?

$('a[rel=tooltip]').tooltip(); 

मेरे मार्कअप इस तरह दिखता है:

<a rel="tooltip" title="Not implemented" class="btn"><i class="icon-file"></i></a> 

यह ठीक काम करता है, लेकिन मैं गतिशील <a> तत्वों को जोड़ने और टूलटिप्स 'नहीं कर रहे टी उन गतिशील तत्वों के लिए दिखा रहा है। मुझे पता है क्योंकि यह केवल इसलिए है। टोलटिप() एक बार जब दस्तावेज सामान्य jquery $(document).ready(function() कार्यक्षमता के साथ लोड हो गया है।

गतिशील रूप से बनाए गए तत्वों के लिए मैं इसे कैसे बांध सकता हूं? आमतौर पर मैं jquery लाइव() विधि के माध्यम से ऐसा करता हूं। हालांकि, क्या घटना है जिसे मैं बांधने के लिए उपयोग करता हूं? मुझे यकीन नहीं है कि jquery .live() के साथ बूटस्ट्रैप .tooltip() को कैसे हुक अप करें।

मैं एक तरह से यह काम करने के लिए मिल गया है कुछ इस तरह है:

/* Add new 'rows' when plus sign is clicked */ 
$("a.add").live('click', function() { 
    var clicked_li = $(this).parent('li'); 
    var clone = clicked_li.clone(); 

    clone.find(':input').each(function() { 
     $(this).val(''); 
    }); 

    clicked_li.after(clone); 
    $('a[rel=tooltip]').tooltip(); 
}); 

यह काम करता है, लेकिन एक तरह से hackish लगता है। मैं $ (तैयार) कॉल में सटीक वही .tooltip() लाइन भी कॉल कर रहा हूं। तो, जब तत्व पहले लोड होता है और उस चयनकर्ता से मेल खाता है तो टूलटिप के साथ दो बार मौजूद तत्वों को दो बार करें?

मुझे इस दृष्टिकोण के साथ कोई समस्या नहीं दिख रही है। मैं सिर्फ व्यवहार की सर्वोत्तम अभ्यास या समझ की तलाश में हूं।

+0

हम्म अच्छा सवाल, होगा इस मदद: एक बस गतिशील शीर्षक विकल्प ऐसी परिस्थिति में मुझे लगता है कि पहले से ही उपलब्ध इस्तेमाल कर सकते हैं? https://github.com/twitter/bootstrap/issues/2374 – Tim

+0

यह एक दिलचस्प पढ़ा है, लेकिन मैं केवल एक प्रकार का टूलटिप चाहता हूं। मैं बस यह सुनिश्चित करना चाहता हूं कि टूलटिप चयनकर्ता से मेल खाने वाले किसी भी गतिशील रूप से जोड़े गए तत्व जोड़े जाएंगे, जो मामला नहीं है। –

+3

महान सवाल। ट्विटर के हिस्से पर एक oversite की तरह लगता है। –

उत्तर

435

इस एक का प्रयास करें:

$('body').tooltip({ 
    selector: '[rel=tooltip]' 
}); 
+3

ग्रेट। यह सही जवाब है, क्योंकि यह मूल रूप से लाइव/ऑन का विकल्प है। – Mahn

+0

उत्सुक, यह वास्तव में कैसे काम करता है? – Calvin

+3

@CalvinL [यदि कोई चयनकर्ता प्रदान किया जाता है, तो टूलटिप ऑब्जेक्ट निर्दिष्ट लक्ष्यों को सौंपे जाएंगे।] (Http://twitter.github.com/bootstrap/javascript.html#tooltips) – Terry

15

मेरे लिए, केवल पकड़ने mouseenter घटना थोड़ा गाड़ी थी, और टूलटिप नहीं दिख रहा था/ठीक से छुपा। मैं इस लिखने के लिए किया था, और यह अब पूरी तरह से काम कर रहा है:

$(document.body).tooltip({selector: '[title]'}) 
.on('click mouseenter mouseleave','[title]', function(ev) { 
    $(this).tooltip('mouseenter' === ev.type? 'show': 'hide'); 
}); 
+3

यह बहुत उपयोगी था क्योंकि क्यों .on ('होवर') सही काम नहीं करेगा। – Adam

6

मेरे लिए, यह जे एस एक ही समस्या है कि Paola

मेरे समाधान के साथ होता है reproduces इन उत्तरों के संयोजन ने मुझे सबसे अच्छा परिणाम दिया - मुझे अभी भी टूलटिप को स्थानांतरित करने और इसे प्रासंगिक कंटेनर से जोड़ने की इजाजत दी गई है:

$('body').on('mouseenter', '[rel=tooltip]', function(){ 
    var el = $(this); 
    if (el.data('tooltip') === undefined) { 
    el.tooltip({ 
     placement: el.data("placement") || "top", 
     container: el.data("container") || false 
    }); 
    } 
    el.tooltip('show'); 
}); 

$('body').on('mouseleave', '[rel=tooltip]', function(){ 
    $(this).tooltip('hide'); 
}); 

प्रासंगिक HTML:

<button rel="tooltip" class="btn" data-placement="bottom" data-container=".some-parent" title="Show Tooltip"> 
    <i class="icon-some-icon"></i> 
</button> 
1

मैंने पाया:

$(document).on('mouseenter','[rel=tooltip]', function(){ 
    $(this).tooltip('show'); 
}); 

$(document).on('mouseleave','[rel=tooltip]', function(){ 
    $(this).tooltip('hide'); 
}); 
107

आप एक से अधिक टूलटिप विन्यास है कि आप आरंभ करना चाहते हैं, तो यह मेरे लिए अच्छी तरह से काम करता है।

$("body").tooltip({ 
    selector: '[data-toggle="tooltip"]' 
}); 

फिर आप data विशेषताओं का उपयोग अलग-अलग तत्वों पर गुण सेट कर सकते हैं।

+3

ग्रेट टिप। मुझे इसे $ ("बॉडी") में बदलना पड़ा। टूलटिप ({चयनकर्ता: '[डेटा-टॉगल = "टूलटिप"]'}); – Jafin

+2

यह बूटस्ट्रैप 3 के साथ होना चाहिए। बढ़िया! – grim

+0

बढ़िया! एक तालिका के अंदर उपयोग के लिए अतिरिक्त चौड़ाई से बचने के लिए कंटेनर जोड़ें: 'बॉडी'। –

10

मैं अब पोस्ट किया है यहाँ का जवाब: https://stackoverflow.com/a/20877657/207661

टी एल; डॉ:

$(document.body).tooltip({ selector: "[title]" }); 

अन्य अधिक जटिल कोड अन्य उत्तर में सुझाव: आप कोड का केवल एक ही लाइन है कि दस्तावेज़ तैयार घटना में चलता है की जरूरत है आवश्यक प्रतीत नहीं होता (मैंने बूटस्ट्रैप 3.0 के साथ इसका परीक्षण किया है)।

+1

यह सबसे अच्छा जवाब है। –

+0

यह मेरे मामले के लिए काम किया। मैंने टैबलेटर 2.26.2 और अजाक्स कॉल के माध्यम से आबादी वाले मूल्यों के साथ एक टेबल का उपयोग किया। समस्या यह थी कि एचटीएमएल टूलटिप को आउटपुट के बजाय HTML टेक्स्ट के रूप में दिखाया गया था। यह पहला समाधान है जो मेरे लिए पहले ही काम करता है। +1 और बहुत धन्यवाद! – Anurag

1

इसे पूर्ण शरीर में खोजने की बजाय।

$btn.tooltip({ 
    title: function(){ 
    return $(this).attr('title'); 
    } 
}); 
संबंधित मुद्दे