2012-01-26 13 views
7

यह मेरा कोड है ऐसा करने का कोई और तरीका?jQuery .hide() fadein()

+2

का एक अस्पष्टता रहा है तुम क्यों छिपाने() दो बार मिल गया है सेट? एक बार जब यह छुपाया जाता है तो इसे तब तक छुपा रहना चाहिए जब तक आप इसे दिखाएं() यह फिर से – danwellman

+0

ओह .. मेरा बुरा .. बस एक टाइपो .. प्रश्न संपादित करेगा! – Mackelito

+0

क्या पृष्ठ लोड होने पर ".items" तत्व दिखाई देते हैं (और फिर, अनुमानतः, एक AJAX कॉल के माध्यम से अपडेट किया गया)? क्या छिपाने का विचार है और उस फीड पर ध्यान आकर्षित करने के लिए जो अभी अपडेट किया गया था? – nnnnnn

उत्तर

17

आप अस्पष्टता आप रखना चाहते हैं के बजाय यदि का उपयोग कर सकता है तत्व के आयाम बरकरार:

$('.items').html(response).css({'opacity':0}).animate({'opacity':1}); 
+0

स्वच्छ और सरल .. अब मैं इसके बारे में क्यों नहीं सोचा? ;) धन्यवाद! – Mackelito

+0

कोई समस्या दोस्त नहीं :) –

+1

मुझे पता चला कि यह भी काम करता है ... एक तेज है कि दूसरा? $ (प्रतिक्रिया)। छुपाएं()। संलग्न करें (AJAXElement) .fadeIn(); – Mackelito

4

छिपाएं सीएसएस का उपयोग कर और उसके बाद जरूरत पड़ने पर इसे फीका:

सीएसएस:

.items { 
    display:none; 
} 

जावास्क्रिप्ट

$('.items').html(response).fadeIn();

+0

समस्या यह है कि यह एक AJAX प्रतिक्रिया है .. पेज लोड पर दिखाए गए आइटम हैं जो मैं सिर्फ – Mackelito

+0

फ़िल्टर कर रहा हूं, आपके पास कुछ अन्य विकल्प हैं - HTML को प्रतिस्थापित करें और div को इसके बदले दिखाने के लिए हाइलाइट करें ... एक संलग्न करें div और पिछले div ऊपर स्लाइड करें और फिर नया div ऊपर स्लाइड .... या fadeOut()/fadeIn()? – ManseUK

0

आप मौजूदा सामग्री और नए के बीच एक चिकनी transtion को दिखाने के लिए चाहते हैं, कोशिश निम्नलिखित:

$(function(){ 
    $('.items').fadeOut(function(){ 
     $(this).html(response).fadeIn(); 
    }) 
}); 
1

यह एक क्लीनर समाधान है, क्योंकि यह तत्व की एक चमकती प्रभाव से बचा जाता है पहले जोड़ा जा रहा है, तो जल्दी से होने इसकी अस्पष्टता 0.

को इस तरह ELEM जोड़ा पहले से ही 0.

var elem = $(response).css({'opacity': 0}); 
$('.items').html(elem); 
elem.animate({'opacity': 1}); 
संबंधित मुद्दे