2011-03-10 22 views
14

मेरे पास एक jquery UI बटन (#toggleIcon) है जो क्लिक करते समय, कुछ आइकन दिखाने के लिए div (.icons) को टॉगल करता है। मैं नई छवियों को गतिशील रूप से जोड़ने के लिए Jquery आइसोटोप और Infinitescroll का भी उपयोग कर रहा हूं। मैं जो करने की कोशिश कर रहा हूं वह स्लाइड टॉगल स्थिति को बनाए रखने के लिए एक तरीका है क्योंकि नई छवियों को जोड़ा और अपडेट किया गया है। Ifinitescroll में कॉलबैक फ़ंक्शन है ताकि मैं पृष्ठ और आइकन की स्थिति अपडेट कर सकूं।स्लाइड के बाद DIV खुला या बंद होने पर परीक्षण कैसे करें

//My button click function 
$("#styleSwitcher #toggleIcons").click(function() { 
    $('.icons').slideToggle('slow'); 
    //for Isotope to update the layout 
    $('#container').isotope('reLayout') 
    return false; 
}); 

//code I am working on to put in callback to test if div is open or closed 
if($(".icons").is(":hidden")) 
{ 
    $('.icons').hide(); 
} 
else 
{ 
    $('.icons').show(); 
} 

काम नहीं कर रहा है। किसी भी मदद या दिशा की सराहना की जाएगी। धन्यवाद

+0

परिभाषित * काम नहीं कर रहा *। ऐसा लगता है कि यह समझ में नहीं आता है, 'छुपाएं') '.icons' जब वे पहले से ही 'छुपा' हैं। 'If' खंड में बयानों को स्विच करें या किसी अन्य तत्व का परीक्षण करें। –

+0

बटन क्लिक करने के साथ छवियों को जोड़ने के लिए कुछ भी क्लिक करता है? या वे अलग-अलग कार्य हैं? – DefyGravity

उत्तर

21

आप पीछे की ओर अपनी हालत है:

if($(".icons").is(":visible")) <----- 
    { 
$('.icons').hide(); 
    }  
else 
    { 
$('.icons').show(); 
    } 
2

मैं :visible

if($(".icons:visible").length > 0) 
    //item is visible 
else 
    //item is not visible 

का प्रयोग करेंगे, लेकिन आप अपने कोड का पालन करना चाहते हैं

if($(".icons").is(":hidden")) 

शायद पढ़ना चाहिए

if($(".icons").is(":hidden").length > 0) 
0

मुझे लगता है कि मैं समझता हूं कि आप क्या चाहते हैं। कुछ बटन से, जिनके पास छवियों को जोड़ने के साथ कुछ लेना देना नहीं है, उपयोगकर्ता आइकन छुपा सकते हैं और दिखा सकते हैं। नए चित्र जोड़े गए हैं, आइकन 'दिखाए' के ​​साथ, और आपको कॉलबैक पर कोई जानकारी नहीं है कि आपको आइकन दिखाना चाहिए या उन्हें छुपाएं ताकि वे बाकी गैलरी से मेल खाते हों। एक समारोह में

//My button click function 
$("#styleSwitcher #toggleIcons").click(function() { 
$('.icons').slideToggle('slow'); 
//for Isotope to update the layout 
$('#container').isotope('reLayout').data({iconStateIsHidden:$('.icons').is(":hidden")}); 
return false; 
}); 



//code I am working on to put in callback to test if div is open or closed 



     if($("#container").data()[iconStateIsHidden]) 
      { 
// newly added images should match the rest of the gallery 
     $('.icons').hide(); 
      }  
     else 
      { 
// newly added images should match the rest of the gallery 
     $('.icons').show(); 
      } 
+0

यह बिल्कुल सही है। यदि आइकन दिखाए जा रहे हैं, तो उन्हें दिखाना चाहिए, आदि। बटन छवियों को नहीं जोड़ता है, बस .icon div को टॉगल करता है। अभी तक काम करने के लिए कोड नहीं मिल रहा है लेकिन से जाने के लिए एक अच्छी दिशा है। मैं मदद की सराहना करता हूं !!! – Macsupport

+0

मैंने अभी भी .data() के साथ वास्तव में खेलना शुरू कर दिया है, और मुझे शक नहीं होगा कि मैं इसका गलत इस्तेमाल कर रहा हूं। भी, $ ('आइकन')। (": छुपा") मिलान किए गए सेट में सभी आइकन जांचेंगे। .is() करेंगे || उन्हें जांचें, इसलिए यदि कोई छुपा हुआ है तो यह सच हो जाता है – DefyGravity

20

रखें जांच राज्य स्क्रिप्ट -

$('.advance-view').click(function() { 
    $('#advance-control').slideToggle('slow', function() { 
     if ($('#advance-control').is(':hidden')) 
     { 
      $('.advance-view').css("background-color", "#2B509A"); 
     } 
     else 
     { 
      $('.advance-view').css("background-color", "#4D6837"); 
     } 
    });    
}); 
1

मैं एक ही लेकिन एक आईडी के आधार सेटअप के लिए कर रहा था यह थोड़ा नियंत्रण न करने दें .. और उसके बाद मैंने पाया यह काम किया जब मैं इस का इस्तेमाल किया इसके बजाए

if ($(this).is(':hidden')) { 
    var state = "closed"; 
} else { 
    var state = "open"; 
} 

alert($(this).attr('id') + ' is ' + state); 
return false;