2013-01-17 5 views
9

को समझने के लिए प्रतीत नहीं होता है मुझे अपने jQuery UI टूलटिप्स पर एक प्रीपेले जोड़ने की आवश्यकता है। मैं सबसे हालिया संस्करण (1.9) का उपयोग कर रहा हूं और वे छेड़छाड़ के 2 सेकंड बाद खोलने की युक्तियां चाहते हैं।मुझे jQuery UI टूलटिप्स में एक प्रीपेले जोड़ने की आवश्यकता है लेकिन इसे

मैं का उपयोग कर मेरी शीर्ष लेख में सुझाव के बोल रहा हूँ:

<script> 
    $(function() { 
     $(document).tooltip({ predelay:2000,}); 
    }); 
</script> 

लेकिन जब वे निकाल दिया जाता है, वे किसी भी देरी ... किसी भी मदद की जरूरत नहीं है?

उत्तर

21

उपयोग इस

$("#elementid").tooltip({ 
    show: { 
    effect: "slideDown", 
    delay: 250 
    } 
}); 
+9

यदि प्रभाव महत्वपूर्ण नहीं है, '$ (" #elementid ") .tooltip ({show: {delay: 2500}});' पर्याप्त है। – SNag

0

कि अगर मदद करता है आईई अल्पविराम के झूलते निकालने का प्रयास करें शायद, और देख के साथ मुद्दों है:

$(document).tooltip({ delay:2000 }); 
+0

यह मेरे लिए काम नहीं करता .. मैं टूलटिप को देखने में सक्षम था, लेकिन देरी मूल्य में कोई फर्क नहीं पड़ता। स्वीकृत उत्तर सही ढंग से देरी को शामिल करता है। – SNag

+1

'predelay' सही विशेषता नहीं है। –

4

मैं एक ही समस्या थी लेकिन अंत में इस समाधान के साथ आया था:

var opendelay = 500; 
var closedelay = 500; 
var target = $('.selector'); 
target.tooltip({ /* ... */ }); 
target.off('mouseover mouseout'); 
target.on('mouseover', function(event) { 
    event.stopImmediatePropagation(); 
    clearTimeout(target.data('closeTimeoutId')); 
    target.data('openTimeoutId', setTimeout(function() { target.tooltip('open'); }, opendelay)); 
}); 
target.on('mouseout', function(event) { 
    event.stopImmediatePropagation(); 
    clearTimeout(target.data('openTimeoutId')); 
    target.data('closeTimeoutId', setTimeout(function() { target.tooltip('close'); }, closedelay)); 
}); 

अनिवार्य रूप से उसके द्वारा है:

  • टूलटिप के लिए डिफ़ॉल्ट onmouseover घटना अक्षम
  • टूलटिप जो setTimeout का उपयोग कर देरी हो रही है के लिए एक नया माउस ले जाएँ घटना जोड़ें()
  • एक नया mouseout घटना जो टाइमआउट (रद्द जोड़े इस टूलटिप से बचाता है यह भी एक "closedelay" उर्फ ​​"predelay" उसी तकनीक का
  • event.stopImmediatePropagation(); केवल की जरूरत है का उपयोग करते हुए "opendelay" के समान जोड़ता है: मामले में दिखाए जाने से माउस को पहले से ही से पहले देरी ellapsed लक्षित क्षेत्र)
  • बोनस छोड़ दिया कुछ मामले। जैसे। यदि आप टूलटिप-तत्व को आईटी (इसे खोले जाने के बाद) दिखाई देने के दौरान दृश्यमान रहना चाहते हैं। यदि आप इसे चाहते हैं, तो टूलटिप पर एक ही होवर ईवेंट पंजीकृत करें: target.tooltip({ open: function (event, ui) { ui.tooltip.hover(..., ...); } });
  • पेज। आप इन कॉलों में से कई को on और off भी श्रृंखलाबद्ध कर सकते हैं।
  • यह this या $(this) द्वारा target घटना-कार्यों के अंदर बदलने के लिए संभव हो सकता है। लेकिन मुझे यकीन नहीं है और मैंने कोशिश नहीं की है; शायद बाद में काम नहीं कर सकता है।
  • आप closeDelay बस closeTimeoutId या closedelay युक्त पंक्तियों को हटा दें और target.off('mouseover mouseout'); में mouseout हटाने या 0
  • ही अगर आप openDelay की जरूरत नहीं है के लिए चला जाता है के लिए सेट ... बस दूसरी तरह की जरूरत नहीं है लगभग
संबंधित मुद्दे

 संबंधित मुद्दे