0

我不知道如何正确定义我的问题。

我为每个 .slider 提供了一个函数,并且我还为每个滑块提供了一个带有“真实值”的变量。由于不同滑块的实际值的数量不同,我想我会在数组中计数值的帮助下查找替代的数量,然后将 max: _设置为该数字。使用jQuery UI 滑块

我的代码:

   var costValues = [0, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 50000];
        var timeValues = ['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'];
        $( ".slider" ).each(function(i, e) {

..more Code

“dennaArray”的内容与相关数组的名称相同,但我无法查找这些数组的 .length,因为它将“dennaArray”解释为本身带有“char 内容”的变量。

4

1 回答 1

1

阿利索,

从你的问题的第一个版本....

首先,制作普通 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()函数内部,您可以从以下两个数组中选择一个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('');
            }
        });
    });
});
于 2012-10-25T01:03:47.223 回答