2012-09-27 7 views
5

मेरे पास दो सरणी हैं। एक नेविगेशन के लिए है, दूसरा पेज पर पैनलों के लिए है। सरणी एक ही आकार दोनों हैं। एक पैनल के लिए एक एनवी बटन। यह कोड काम करता है, लेकिन मुझे यकीन है कि अस्थायी चर सेट किए बिना ऐसा करने का एक बेहतर तरीका होना चाहिए।क्या यह jQuery में ऐरे तत्वों तक पहुंचने का सही तरीका है?

$('.footer-nav li').click(function() 
{ 
    var temp = $('.footer-nav li').index(this); 
    var tArray = $('.about-bgs li'); 
    $('.about-bgs li').fadeOut(); 
    $(tArray[temp]).fadeIn(); //This is the line in question! 
}); 

कोई भी लेने वाला?

+1

उपयोग कर सकते हैं: '$ ('के बारे में-bgs। li ')। fadeOut()। eq ($ ('। footer-nav li ')। अनुक्रमणिका (यह))। fadeIn(); ' – Orbling

उत्तर

2

jQuery कॉलबैक $(selector).each(callback)accepts two parameters: index और element। तो तुम

$('.footer-nav li').each(function(index, element) { 
    element.click(function(evt) { 
    $('.about-bgs li').fadeOut(); 
    $('.about-bgs li').get(index).fadeIn(); 
    }); 
}); 

लिख सकते हैं लेकिन यह मेरे लिए एक अजीब कोड लगता है, के बाद से वहाँ के बीच एनीमेशन संघर्ष सूची में तत्वों (जो बाहर fading कर रहे हैं) के सभी और नामित एक (जिसमें fading है)। मुझे लगता है कि यह उम्मीद के रूप में काम नहीं करेगा।

var current = $('.about-bgs li').fadeOut(); 
var last = $('.about-bgs li .current'); 
if (current !== last) { 
    last.removeClass('current').fadeOut(); 
    current.addClass('current').fadeIn(); 
} 
:

के बाद से ऐसा लगता है कि केवल एक ही तत्व एक समय में दिखाई दे रहा है, मैं सिर्फ वर्तमान में दृश्यमान एक (कहना है कि आप एक ही तत्व पर लगातार दो क्लिक के लिए जांच करने की आवश्यकता) बाहर फीका था

डॉम लोडिंग समय पर आपको .current तत्व निर्दिष्ट करना होगा और इस फ़ंक्शन को चलाएं (या तदनुसार सीएसएस/जेएस के साथ खेलना)।

0

मुझे लगता है कि तुम सिर्फ उपयोग करने के लिए tArray[$(this)].fadeIn()

संपादित कर पाए हैं चाहिए: कुछ अन्य सामान: आप पहले से ही var tArray = $('.about-bgs li'); लिखा है के रूप में, तुम सिर्फ शायद tArray.fadeOut();

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