2010-10-07 16 views
14

मैंने देखा है कि अधिकांश लोग इस समाधान के साथ ऐसा करेंगे कि माउस पर, हम TITLE विशेषता में मान ले लेंगे, फिर उसके मान को हटा दें। माउस पर रहते हुए, हम इसे वापस रख देंगे।jquery: शीर्षक विशेषता छुपाएं लेकिन इसे हटाएं

$(this).attr('title',''); 

या

$(this).removeAttr('title'); 

मैं जानना चाहता हूँ यह संभव है सिर्फ शीर्षक विशेषता को हटाने की तुलना में प्रदर्शित होने से टूलटिप छिपाने?

धन्यवाद!

उत्तर

33

नहीं, आप ब्राउज़र नहीं तय करेंगे कि शीर्षक विशेषता के साथ क्या करना है। हालांकि, आप इसे बाद में संदर्भ के लिए नोड (और संभवतः शीर्षक बहाल करने) के साथ बचा सकते हैं:

$(this).data("title", $(this).attr("title")).removeAttr("title"); 
+0

$ (इस) .data() बातें उस प्रकार के स्टोर करने के लिए एक बहुत ही उपयोगी है। इसका उल्लेख करने के लिए +1। :-) –

+0

धन्यवाद! यह समाधान दिलचस्प है! क्या मैं जान सकता हूं कि मैं इस संग्रहीत डेटा का उपयोग कैसे कर सकता हूं? मुझे डेटा को एक var में पास करने की आवश्यकता है जैसे कि यह मेरा मूल var path = $ (this) .attr ("title") है; धन्यवाद! – laukok

+0

$ (यह) .डेटा ("शीर्षक") आपको संग्रहीत डेटा तक पहुंच प्रदान करेगा। – FRotthowe

6

तो कहीं और भी शीर्षक स्टोर कर सकते हैं जबकि माउस तत्व खत्म हो गया है। आपको इसे डोम में ही स्टोर करने की ज़रूरत नहीं है, हालांकि; आप इसे जेएस var में रख सकते हैं:

(function(){ 
    var ttext; 
    $(yourtargetselectorhere).hover(function(){ 
    ttext = $(this).attr('title'); 
    $(this).removeAttr('title'); 
    }, 
    function(){ 
    $(this).attr('title', ttext); 
    }); 
}()); 
+0

इसके लिए धन्यवाद! – Romtim

1

डरते हैं कि आप नहीं कर सकते। preventDefault() विधि इस के लिए काम नहीं कर रही है, जो दुर्भाग्यपूर्ण है क्योंकि यह आदर्श होगा।

तुम सच में खिताब बरकरार रखने की जरूरत है विशेषता कुछ इस तरह कर सकता है:

$(document).ready(function(){ 
     $("a").hover(function(){ 

     // Get the current title 
     var title = $(this).attr("title"); 

     // Store it in a temporary attribute 
     $(this).attr("tmp_title", title); 

     // Set the title to nothing so we don't see the tooltips 
     $(this).attr("title",""); 
     }, 

     function() { // Fired when we leave the element 

     // Retrieve the title from the temporary attribute 
     var title = $(this).attr("tmp_title"); 

     // Return the title to what it was 
     $(this).attr("title", title); 
     }); 
}); 

हालांकि यह बहुत जटिल है। जब तक कोई विशेष कारण नहीं है तो आपको शीर्षक विशेषताओं को बनाए रखने की आवश्यकता है, मैं उन्हें हटा दूंगा।

+0

धन्यवाद। जानकर खुशी हुई! मैं इसके चारों ओर काम करूंगा और अपने टैग में शीर्षक विशेषताओं को टालने से बचाऊंगा :-) – laukok

3

आपके समाधान के लिए धन्यवाद। मुझे एक परियोजना में एक ही समस्या थी। जब मैं छवि को घुमाता था तब समस्या एक लंबे बदसूरत शीर्षक दिखाई दे रही थी और मुझे पॉपअप में शीर्षक की आवश्यकता थी क्योंकि शीर्षक विशेषता में, मैं किसी उत्पाद को एक खरीद लिंक डालता हूं। लेकिन जैसा कि मैंने कहा, टैग में एक लंबा शीर्षक भी होवर पर दिखाई दे रहा था। इसलिए मैंने आपके समाधान के अंत में एक .click फ़ंक्शन जोड़ा है, मुझे नहीं पता कि यह एक और अधिक अर्थपूर्ण तरीके से हल करना संभव है, क्योंकि मैं एक jquery विशेषज्ञ नहीं हूं। पूरा स्क्रिप्ट नीचे चिपकाया जाता है, का संबंध :)

$(".collection-box a").hover(function(){ 

    // Get the current title 
    var title = $(this).attr("title"); 

    // Store it in a temporary attribute 
    $(this).attr("tmp_title", title); 

    // Set the title to nothing so we don't see the tooltips 
    $(this).attr("title",""); 
    }, 

    function() { // Fired when we leave the element 

    // Retrieve the title from the temporary attribute 
    var title = $(this).attr("tmp_title"); 

    // Return the title to what it was 
    $(this).attr("title", title); 
    }); 


    //Restore the title on click 
    $(".collection-box a").click(function(){ 

    // Retrieve the title from the temporary attribute 
    var title = $(this).attr("tmp_title"); 

    // Return the title to what it was 
    $(this).attr("title", title); 
    }); 
-1

यहाँ एक अच्छा समाधान है, एक नई विशेषता कहते हैं 'fancytitle' इस

<a href='#' customtitle='visit google' id='demo'> Visit Google Search </a> 

और लेने की तरह हमेशा की तरह 'शीर्षक' के स्थान पर नाम इस

$('a#demo').attr('fancytitle') 
+0

कस्टम, गैर-मानक विशेषताओं को "डेटा-" के साथ उपसर्ग किया जाना चाहिए। – cpburnz

9

यह काम करता है जैसे माउसेंटर/होवर पर jquery के साथ विशेषता का मान।

$(document).ready(function(){ 
 
     $("a") 
 
     \t .mouseenter(function() { \t 
 
     \t \t var title = $(this).attr("title"); 
 
     \t \t $(this).attr("tmp_title", title); 
 
     \t \t $(this).attr("title",""); 
 
     \t }) 
 
     \t .mouseleave(function() { 
 
     \t \t var title = $(this).attr("tmp_title"); 
 
     \t \t $(this).attr("title", title); 
 
     \t }) 
 
     \t .click(function() { \t 
 
     \t \t var title = $(this).attr("tmp_title"); 
 
     \t \t $(this).attr("title", title); 
 
     \t }); 
 
     }); 
 
     });

+0

बहुत बढ़िया! यह बिना किसी समस्या के मेरे लिए काम करता है। –

+0

@DeeaB: आपका स्वागत है .. मदद करने में खुशी ..^_^ –

+0

यह मेरे लिए भी काम करता है .. धन्यवाद रिडवान – Gops

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