アリソ、
あなたの質問の最初のバージョンから....
まず、プレーンな JavaScript オブジェクトの配列プロパティを作成します。
var lookupArrays = {
'cost': [0, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 50000],
'time': ['Upp till 10 min', 'Upp till: 30 minuter', 'Upp till: 1h', 'Upp till tre timmar', 'Upp till en halvdag', 'Upp till en heldag', 'Upp till 2-3 dagar', 'Upp till en vecka', 'Upp till en månad', 'Upp till ett halvår', 'Upp till Ett år', 'Över ett år']
};
次に、.each()
関数内で、次の 2 つの配列のいずれかを選択できますlookupArrays
。
var dennaArray = lookupArrays[$(e).parent().attr('id')];
よくわかりませんが、slide:
関数は次のように単純化される場合があります。
slide: function( event, ui ) {
$(e).parent().find('.slider-result').html( dennaArray[ui.value] );
},
で変数をローカライズすることを忘れないでくださいvar
。コードには、ローカライズする必要があるがローカライズされていないものがいくつかあります。
編集
いくつかの圧縮と効率の節約を伴うコードは次のとおりです。
$(function() {
var $$ = {//cache of static jquery objects
content: $('#content').hide(),
rightColumn: $('#rightColumn').hide(),
aktiviter: $('div.aktivitet'),
tagSwitches: $('li.tag'),
skickaFeedback: $('#skickaFeedback'),
sliders: $('.slider'),
describers: $('.describers'),
header: $('#header'),
h3: $('h3')
};
var lookupArrays = {
'cost': [0, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 50000],
'time': ['Upp till 10 minuter', 'Upp till: 30 minuter', 'Upp till: 1h', 'Upp till tre timmar', 'Upp till en halvdag', 'Upp till en heldag', 'Upp till 2-3 dagar', 'Upp till en vecka', 'Upp till en månad', 'Upp till ett halvår', 'Upp till Ett år', 'Över ett år'],
'timeSimplified': ['tid-1', 'tid-2', 'tid-3', 'tid-4', 'tid-5', 'tid-6', 'tid-7', 'tid-8', 'tid-9', 'tid-10', 'tid-11', 'tid-12']
};
var dolj, visaContent;
$$.sliders.each(function(i, e) {
var $e = $(e),
$parent = $e.parent();
var dennaArray = lookupArrays[$parent.attr('id')];
$e.slider({
animate: true,
range: "min",
value: 0,
min: 0,
max: dennaArray.length-1,
step: 1,
start: function( event, ui ) {
clearTimeout(dolj);
clearTimeout(visaContent);
},
slide: function( event, ui ) {
clearTimeout(dolj);
clearTimeout(visaContent);
switch($parent.attr('id')) {
case 'cost':
var txt = (ui.value == 0) ? 'Det måste vara gratis.' : 'Upp till: ' + dennaArray[ui.value] + ':-';
break;
case 'time':
default:
var txt = dennaArray[ui.value];
}
$parent.find('.slider-result').html( txt );
},
stop: function(event, ui) {
dolj = setTimeout(function () {
$$.sliders.add($$.describers).add($$.header.find('h2')).slideUp();
$$.h3.css('cursor', 'pointer');
$parent.next().children().andSelf().slideDown();
$$.header.find('h1').animate({
'font-size': '1.4em',
}, 1000, function() {
});
}, 3500);
visaContent = setTimeout(function() {
$$.content.add($$.rightColumn).slideDown();
}, 400);
}
});
});
//Om du klickar på ngn av frågorna så visas slidern igen så att du kan ändra dina parametrar :D
$('.question').click(function(){
$(this).show().parent().children().toggle();
});
$$.rightColumn.on('click', 'li.tag', function(){
$$.aktiviter.hide();
$tagSwitch = $(this).toggleClass('active');
$$.tagSwitches.each(function() {
if($(this).hasClass('active')) {
var filterID = $(this).attr('id').replace("filterid-",'');
$$.aktiviter.filter("." + filterID).show();
}
});
});
$('#skickaFeedback').click(function(){
$.ajax({
type: "POST",
url: "saveFeedback.php",
data: "someFeedback=" + $(this).prev().val(),
cache: false,
success: function(html){
alert('Tack för din feedback!');
$('#skickaFeedback').prev().val('');
}
});
});
});