2016-02-20 3 views
0

Я работаю над сценарием, который я основываюсь на примере. В примере они использовали:Получение скрипта для работы без .text

$("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper)

, чтобы получить цену, чтобы показать в зеленый слайдер. Я хочу добавить цену в budgetAmount, которую я выполнил и разместил текст «БЮДЖЕТ» в цене. Однако при этом скользящая панель больше не скользит к выбранной точке.

Чтобы увидеть оригинальный эффект закомментируйте код:

//$("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
     $("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
     //$("#sliderInterval").text("BUDGET") 
     //$("#budgetAmount").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 

В принципе, я не могу понять, что нужно изменить следующий код для того, чтобы позволить зеленой полосе скользить в выбранной точке.

$("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper)

Кроме того, вы заметите, что вы должны нажать непосредственно на точку, чтобы получить это, чтобы скользить. Есть ли способ, которым я могу заставить окрестность сделать кликабельным?

$(function() { 
 
    var ranges = [{ 
 
    lower: 500, 
 
    upper: 1000 
 
    }, { 
 
    lower: 1100, 
 
    upper: 2000 
 
    }, { 
 
    lower: 2100, 
 
    upper: 5000 
 
    }, { 
 
    lower: 5100, 
 
    upper: 10000 
 
    }, { 
 
    lower: 11000, 
 
    upper: 20000 
 
    }, { 
 
    lower: 21000, 
 
    upper: 50000 
 
    }, ]; 
 
    var wslider = $("#sliderBar").width()/(ranges.length); 
 
    for (var i = 0; i < ranges.length; i++) { 
 
    var range = $('<div class="intervalCircle">'); 
 
    var left = (100/(ranges.length) * (i + 0.5)); 
 
    left = "calc(" + left + "% - 8px)"; 
 
    range.css("left", left); 
 
    range.on("click", function(idx) { 
 
     return function() { 
 
     var sliderleft = wslider * idx; 
 
\t \t //$("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
 
\t \t //*** HERE ***   $("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
 
\t \t $("#sliderInterval").text("BUDGET") 
 
\t \t $("#budgetAmount").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
 
      .animate({ 
 
      left: sliderleft - 2 
 
      }); 
 
     }; 
 
    }(i)); 
 
    $("#sliderBar").append(range); 
 
    $("#sliderInterval").css("width", wslider + "px"); 
 
    } 
 
});
#sliderBar { 
 
    border-radius: 15px; 
 
    width: 90%; 
 
    height: 30px; 
 
    margin: 30px 10%; 
 
    background: #454343; 
 
    position: relative; 
 
    overflow: hidden; 
 
} 
 
.intervalCircle { 
 
    border-radius: 50%; 
 
    height: 10px; 
 
    width: 10px; 
 
    background: red; 
 
    z-index: 1; 
 
    position: absolute; 
 
    margin-top: 10px; 
 
    cursor: pointer; 
 
} 
 
.intervalCircle:hover { 
 
    
 
} 
 
.rangeSection.active{ 
 
    background-color: green; 
 
    z-index: 3; 
 
} 
 
.sliderInterval:first-child { 
 
    padding-left: 0%; 
 
} 
 
.intervalCircle:first-child { 
 
    padding-left: 0; 
 
} 
 
#sliderInterval { 
 
    height: 100%; 
 
    border-radius: 15px; 
 
    position: absolute; 
 
    text-align: center; 
 
    z-index: 999; 
 
    color: #FFF; 
 
    background-color: green; 
 
} 
 
#budgetAmount { 
 
\t font-size: 1.5em; 
 
\t color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="sliderBar"> 
 
\t <div id="sliderInterval"></div> 
 
</div> 
 
<div id="budgetAmount"></div>

ответ

1

Вы должны переместить линию «бюджет», поэтому он может вызвать функцию анимировать

$("#sliderInterval").text("BUDGET").animate({ 
      left: sliderleft - 2 
      }); 

Таким образом, он может двигаться.

Для того, чтобы бюджет выглядеть $ 1,000- $ 2.000

$("#budgetAmount").text("$" + ranges[idx].lower.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " - " + "$" + ranges[idx].upper.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 

Источник: answer

$(function() { 
 
    var ranges = [{ 
 
    lower: 500, 
 
    upper: 1000 
 
    }, { 
 
    lower: 1100, 
 
    upper: 2000 
 
    }, { 
 
    lower: 2100, 
 
    upper: 5000 
 
    }, { 
 
    lower: 5100, 
 
    upper: 10000 
 
    }, { 
 
    lower: 11000, 
 
    upper: 20000 
 
    }, { 
 
    lower: 21000, 
 
    upper: 50000 
 
    }, ]; 
 
    var wslider = $("#sliderBar").width()/(ranges.length); 
 
    for (var i = 0; i < ranges.length; i++) { 
 
    var range = $('<div class="intervalCircle">'); 
 
    var left = (100/(ranges.length) * (i + 0.5)); 
 
    left = "calc(" + left + "% - 8px)"; 
 
    range.css("left", left); 
 
    range.on("click", function(idx) { 
 
     return function() { 
 
     var sliderleft = wslider * idx; 
 
\t \t //$("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
 
\t \t //*** HERE ***   $("#sliderInterval").text("$" + ranges[idx].lower + " - " + "$" + ranges[idx].upper) 
 
\t \t 
 
\t \t $("#budgetAmount").text("$" + ranges[idx].lower.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " - " + "$" + ranges[idx].upper.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
 
      $("#sliderInterval").text("BUDGET").animate({ 
 
      left: sliderleft - 2 
 
      }); 
 
     }; 
 
    }(i)); 
 
    $("#sliderBar").append(range); 
 
    $("#sliderInterval").css("width", wslider + "px"); 
 
    } 
 
});
#sliderBar { 
 
    border-radius: 15px; 
 
    width: 90%; 
 
    height: 30px; 
 
    margin: 30px 10%; 
 
    background: #454343; 
 
    position: relative; 
 
    overflow: hidden; 
 
} 
 
.intervalCircle { 
 
    border-radius: 50%; 
 
    height: 10px; 
 
    width: 10px; 
 
    background: red; 
 
    z-index: 1; 
 
    position: absolute; 
 
    margin-top: 10px; 
 
    cursor: pointer; 
 
} 
 
.intervalCircle:hover { 
 
    
 
} 
 
.rangeSection.active{ 
 
    background-color: green; 
 
    z-index: 3; 
 
} 
 
.sliderInterval:first-child { 
 
    padding-left: 0%; 
 
} 
 
.intervalCircle:first-child { 
 
    padding-left: 0; 
 
} 
 
#sliderInterval { 
 
    height: 100%; 
 
    border-radius: 15px; 
 
    position: absolute; 
 
    text-align: center; 
 
    z-index: 999; 
 
    color: #FFF; 
 
    background-color: green; 
 
} 
 
#budgetAmount { 
 
\t font-size: 1.5em; 
 
\t color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="sliderBar"> 
 
\t <div id="sliderInterval"></div> 
 
</div> 
 
<div id="budgetAmount"></div>

+0

Спасибо! Я не знал, что это так просто. Знаете ли вы, есть ли что-нибудь, что я могу сделать, чтобы облако вокруг точек было доступно для кликов? – Becky

+0

Я боюсь, что на данный момент нет способа: кликабельная область - это div с классом .intervalCircle, который является самой маленькой кружкой и автоматически генерируется JQuery, если я правильно понял. Единственное возможное обходное решение, которое я вижу, - это попытаться изменить скрипт, чтобы окружить div тегом, а затем применить функцию jquery с щелчком мыши к тегам – silviagreen

+0

. Я это выясню. Один крошечный вопрос, который я не могу понять. Я пытаюсь добавить запятые в свои диапазоны, чтобы значения печатались как 1000 долларов вместо 1000 долларов. Я пробовал делать это «upper: 1 +», «+ 000», и он отображается в прямом эфире следующим образом: $ 1,0 .... Любые идеи? – Becky

Смежные вопросы