जवाबों:
स्रोत कोड पढ़ने के दौरान ही आज यह पाया गया। इसलिए कक्षा के $.tooltip(string)
भीतर किसी भी फ़ंक्शन को कॉल करता है Tooltip
। और यदि आप देखते हैं Tooltip.fixTitle
, तो यह data-original-title
विशेषता प्राप्त करता है और इसके साथ शीर्षक मान को प्रतिस्थापित करता है।
तो हम बस करते हैं:
$(element).tooltip('hide')
.attr('data-original-title', newValue)
.tooltip('fixTitle')
.tooltip('show');
और निश्चित रूप से पर्याप्त है, यह शीर्षक को अपडेट करता है, जो टूलटिप के अंदर का मूल्य है।
दूसरा तरीका (नीचे देखें @lukmdo टिप्पणी):
$(element).attr('title', 'NEW_TITLE')
.tooltip('fixTitle')
.tooltip('show');
$(element).attr('title', 'NEW_TITLE').tooltip('fixTitle').tooltip('show');
$(element).attr('data-original-title', newValue).tooltip('show');
मेरे लिए सबसे आसान काम था।
बूटस्ट्रैप 3 में यह टूलटिप डिस्प्ले में पहले से ही बदलाव को ट्रिगर करने elt.attr('data-original-title', "Foo")
वाले "data-original-title"
विशेषता के परिवर्तन के रूप में कॉल करने के लिए पर्याप्त है ।
अद्यतन: आप तुरंत बदलाव दिखाने के लिए .tooltip ('शो') जोड़ सकते हैं, आपको शीर्षक में परिवर्तन देखने के लिए माउसआउट और माउसओवर लक्ष्य की आवश्यकता नहीं है
elt.attr('data-original-title', "Foo").tooltip('show');
.tooltip('show');
इसे अपडेट के बाद दिखाने के लिए जोड़ सकते हैं
आप टूलटिप पाठ को वास्तव में शो / छिपाने के बिना अपडेट कर सकते हैं:
$(myEl)
.attr('title', newTitle)
.tooltip('fixTitle')
.tooltip('setContent')
.tooltip('show')
श्रृंखला के अंत के साथ , मेरे लिए काम किया।
setContent
और show
चाल है! आप data-original-title
का उपयोग करने के बजाय सीधे बदल सकते हैंfixTitle
उपकरण बंद करने और फिर से खोलने के बिना पाठ को बदलना चाहते हैं तो एक अच्छा समाधान है।
$(element).attr('title', newTitle)
.tooltip('fixTitle')
.data('bs.tooltip')
.$tip.find('.tooltip-inner')
.text(newTitle)
इस तरह, टेक्स्ट को टूलटिप को बंद किए बिना रिप्लेस किया गया है (लेकिन यदि आप एक शब्द में बदलाव कर रहे हैं आदि तो यह ठीक होना चाहिए)। और जब आप टूलटिप पर वापस + बंद करते हैं, तब भी इसे अपडेट किया जाता है।
** यह बूटस्ट्रैप 3 है, 2 के लिए आपको शायद डेटा / क्लास के नाम बदलने होंगे
$tip
का एक गुण नहीं है$(element)
$(element).attr('title', newTitle).tooltip('fixTitle').parent().find('.tooltip .tooltip-inner').text(newTitle);
यह तब काम करता है जब टूलटिप को तत्काल (जावास्क्रिप्ट के साथ):
$("#tooltip_id").data('tooltip').options.title="New_value!";
$("#tooltip_id").tooltip('hide').tooltip('show');
$('#tooltip_id').data('bs.tooltip').options.title = 'New_value!';
यहाँ बूटस्ट्रैप 4 के लिए अद्यतन किया गया है :
var title = "Foo";
elt.attr('data-original-title', title);
elt.tooltip('update');
elt.tooltip('show');
लेकिन सबसे अच्छा तरीका इस तरह है:
var title = "Foo";
elt.attr('title', title);
elt.attr('data-original-title', title);
elt.tooltip('update');
elt.tooltip('show');
या इनलाइन:
var title = "Foo";
elt.attr('title', title).attr('data-original-title', title).tooltip('update').tooltip('show');
UX की तरफ से आप सिर्फ यह देखते हैं कि टेक्स्ट बिना किसी लुप्तप्राय या छुपाए / शो इफेक्ट्स के साथ बदल दिया गया है और इसके लिए कोई आवश्यकता नहीं है _fixTitle
।
आप केवल data-original-title
निम्नलिखित कोड का उपयोग करके बदल सकते हैं :
$(element).attr('data-original-title', newValue);
$('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show')
https://getbootstrap.com/docs/4.1/components/tooltips/#tooltipdispose
$('#topic_1').tooltip({title: 'Hello'}).tooltip('show');
setTimeout( function() {
$('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show');
}, 5000);
#topic_1 {
border: 1px solid red;
margin: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>
<div id="topic_1">Topic 1</div>
निम्नलिखित ने मेरे लिए सबसे अच्छा काम किया, मूल रूप से मैं किसी भी मौजूदा टूलटिप को स्क्रैप कर रहा हूं और नए टूलटिप को दिखाने के लिए परेशान नहीं हूं। अगर टूलटिप पर कॉलिंग शो अन्य उत्तरों की तरह होता है, तो यह तब भी पॉप अप होता है, जब कर्सर इसके ऊपर मंडराता न हो।
मैं इस समाधान के लिए गया कारण यह है कि अन्य समाधान, मौजूदा टूलटिप का फिर से उपयोग करते हुए, टूलटिप के साथ कुछ अजीब मुद्दों का कारण बनता है, कभी-कभी तत्व के ऊपर कर्सर मँडराते समय नहीं दिखाया जाता है।
function updateTooltip(element, tooltip) {
if (element.data('tooltip') != null) {
element.tooltip('hide');
element.removeData('tooltip');
}
element.tooltip({
title: tooltip
});
}
data('bs.tooltip')
data('tooltip')
बूटस्ट्रैप 4 में मैं अभी $(el).tooltip('dispose');
सामान्य के रूप में फिर से उपयोग करता हूं । तो आप एक फ़ंक्शन के सामने डिस्पोज़ रख सकते हैं जो टूलटिप बनाता है यह सुनिश्चित करने के लिए कि यह दोगुना नहीं है।
मानों के साथ राज्य और टिंकर की जांच करना कम अनुकूल लगता है।
आप एक फ़ंक्शन के साथ टूलटिप कॉल पर सामग्री सेट कर सकते हैं
$("#myelement").tooltip({
"title": function() {
return "<h2>"+$("#tooltipcontainer").html()+"</h2>";
}
});
आपको केवल तथाकथित तत्व के शीर्षक का उपयोग करने की आवश्यकता नहीं है।
धन्यवाद यह कोड मेरे लिए बहुत उपयोगी था, मैंने इसे अपनी परियोजनाओं पर प्रभावी पाया
$(element).attr('title', 'message').tooltip('fixTitle').tooltip('show');
मुझे लगता है कि मेहमत दुरान लगभग सही हैं, लेकिन एक ही टूलटिप और उनके प्लेसमेंट के साथ कई वर्गों का उपयोग करते समय कुछ समस्याएं थीं। निम्न कोड भी js त्रुटियों की जाँच से बचता है अगर "टूलटिप_क्लास" नामक कोई वर्ग है। उम्मीद है की यह मदद करेगा।
if (jQuery(".tooltip_class")[0]){
jQuery('.tooltip_class')
.attr('title', 'New Title.')
.attr('data-placement', 'right')
.tooltip('fixTitle')
.tooltip('hide');
}
सीधे तत्व में पाठ को बदलकर पाठ बदलें। (टूलटिप स्थिति को अद्यतन नहीं करता है)।
$('.tooltip-inner', $element.next()).html(newHtml);
$('.tooltip-inner', $element.next()).text(newText);
पुराने टूलटिप को नष्ट करके पाठ को बदलें, फिर एक नया निर्माण और दिखा रहा है। (पुराने को फीका करने के लिए और नए को फीका करने का कारण बनता है)
$element
.tooltip('destroy')
.tooltip({
// Repeat previous options.
title: newText,
})
.tooltip('show');
मैं "बचत" को चेतन करने के लिए शीर्ष विधि का उपयोग कर रहा हूं। संदेश (  
टूलटिप का उपयोग आकार में नहीं बदलता है) और पाठ को "पूर्ण" करने के लिए परिवर्तित करना। (प्लस पैडिंग) जब अनुरोध पूरा हो जाता है।
$element.tooltip({
placement: 'left',
title: 'Saving...',
trigger: 'manual',
}).tooltip('show');
var parent = $element.parent();
var interval_id = setInterval(function(){
var text = $('.tooltip-inner', parent).html();
switch(text) {
case 'Saving. ': text = 'Saving.. '; break;
case 'Saving.. ': text = 'Saving...'; break;
case 'Saving...': text = 'Saving. '; break;
}
$('.tooltip-inner', parent).html(text);
}, 250);
send_request( function(){
// When the request is complete
clearInterval(interval_id);
$('.tooltip-inner', parent).html('Done. ');
setTimeout(function() {
$element.tooltip('hide');
}, 1500 /* Show "Done." for a bit */);
});
इसने मेरे लिए काम किया: (बूटस्ट्रैप 3.3.6; jquery = 1.11.3)
<a id="alertTooltip" href="#" data-html="true" class="tooltip" data-toggle="tooltip" title="Tooltip message"></a>
<script>
$('#alertTooltip').attr('title', "Tooltip new <br /> message").tooltip('fixTitle');
</script>
विशेषता data-html="true"
टूलटिप शीर्षक पर html का उपयोग करने की अनुमति देती है।
BS4 के लिए (और मामूली बदलाव के साथ BS3) .. खोज और परीक्षण के घंटों के बाद, मैं इस समस्या के लिए सबसे विश्वसनीय समाधान के साथ आया और यह एक ही समय में एक से अधिक (टूलटिप या पॉपओवर) खोलने की समस्या को हल करता है, और ध्यान खोने आदि के बाद अपने आप खुलने की समस्या।
$('[data-toggle="tooltip"]').tooltip({
trigger: 'hover'
}).on('shown.bs.tooltip', function() {
var link = $(this);
var data = '';
data += '<ul style="list-style-type:none;margin:0;padding:0;text-align:left;font-size:12px">';
data += ' <li>Sherif Salah</li>';
data += ' <li>Muhammad Salah</li>';
data += ' <li>and a gazillion more...</li>';
data += '</ul>';
link.attr('data-original-title', data);
setTimeout(function() {
if (link.is(':hover')) {
link.tooltip("dispose").tooltip("show");
}
}, 1000);
});
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="card">
<div class="card-body text-center">
<a href="JavaScript:void(0);" class="btn btn-sm btn-link" data-toggle="tooltip" data-placement="top" data-html="true" title="Loading...">gazillion</a>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
आप इस कोड का उपयोग टूल टिप को छिपाने के लिए अपना शीर्षक बदल सकते हैं और टूलटिप को फिर से दिखा सकते हैं, जब अजाक्स अनुरोध सफलतापूर्वक लौटता है।
$(element).tooltip('hide');
$(element).attr('title','this is new title');
$(element).tooltip('fixTitle');
setTimeout(function() { $(element).tooltip('show');}, 500);
मैं इस आसान तरीके का उपयोग कर रहा हूं:
$(document).ready(function() {
$("#btn").prop('title', 'Click to copy your shorturl');
});
function myFunction(){
$(btn).tooltip('hide');
$(btn).attr('data-original-title', 'Test');
$(btn).tooltip('show');
});