2009-07-28 21 views
12

मेरे पास एक div है जिसमें खाता प्रबंधन पृष्ठ पर सेटिंग्स और विकल्प शामिल हैं।jQuery टॉगल और आईएफ दृश्यमान

$("#moreOptions").slideToggle('slow'); 
if ($("#moreOptions").is(":visible") == true) { 
    $("#lnkMoreOpt").text("Less Options «") 
} 
else { 
    $("#lnkMoreOpt").text("More Options »") 
} 

कोड ऊपर है कि क्या यह दिखाई दे रहा है या नहीं पर निर्भर करता है और अधिक/कम विकल्प लिंक का पाठ बदलना चाहिए, फिर भी ऐसा लगता है jQuery यह अदृश्य/दिखाई बनाने के रूप में टॉगल का इलाज नहीं है।

अभी भी टॉगल फ़ंक्शन का उपयोग करते समय मैं इसे कैसे कार्यान्वित कर सकता हूं?

+0

मैं जानता हूँ कि यह पुराना है, लेकिन एक और विकल्प शायद मान की जाँच करने से पहले आप टॉगल शुरू होगा। – eselk

उत्तर

33

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

$("#moreOptions").slideToggle('slow', callbackFn); 

function callbackFn(){ 

    var $link = $("#lnkMoreOpt"); 

    $(this).is(":visible") ? $link.text("Less Options «") : $link.text("More Options »"); 


} 
+0

उत्कृष्ट जवाब, महान काम करता है! धन्यवाद। – j82374823749

+0

कोई चिंता नहीं, इसके साथ शुभकामनाएँ। – redsquare

1

मैं अलग कार्यों का उपयोग करने के लिए है क्योंकि जब एक समारोह में दो बार इस्तेमाल किया जा करने की जरूरत नहीं है नहीं करना चाहते, यह कोड की बर्बादी है .. मैं विश्वास है कि यह समझने के लिए जब कोई यह करने के लिए आता आसान है ..

$("#moreOptions").slideToggle('slow', function(){ 
    var $link = $("#lnkMoreOpt"); 
    $(this).is(":visible") ? $link.text("Less Options «") : $link.text("More Options »"); 
}); 
0

मुझे लगता है कि इस कोड काम करेंगे

$('#element').toggle('slow', function() { 
    if($(this).is(':hidden')) { 
     $(this).text('This element is hidden.'); 
    } 
    else { 
     $(this).text('This element is visible.'); 
    } 
}); 
संबंधित मुद्दे