Я создаю слайдер jquery, и у меня возникают проблемы с одной глобальной переменной. Я не могу использовать его в качестве локального в моем случае. Я использую несколько слайдеров на одной странице, поэтому эта глобальная переменная EndPosition должна отличаться от слайдера и слайдера.
$.fn.slider = function(id) {
var SliderID = id;
EndPosition = (VisibleWidth - TotalWidth); //End position for sliding
Есть ли способ передать id в имя переменной, что-то вроде EndPosition + id, поэтому я могу использовать его так же, как в других частях кода, например здесь
if (NewPosition <= EndPosition+id){
RightNav.addClass('disabled');
}
Я бы предложил использовать обозначение объекта и скобки:
var positions = {
'endPosition1': 'foo',
'endPosition2': 'bar'
}
var value = positions['endPosition' + id];
Если ваши переменные глобальны, вы можете получить к ним доступ, как и другие свойства, но на этот раз это свойства глобального объекта window
:
window['EndPosition' + id];
Если id
является числовым, вы также можете использовать простой массив:
var positions = ['foo', 'bar'];
positions[id];
positions[id - 1]; // ?
Было бы чище использовать объект для размещения ваших конечных позиций, а не использовать несколько глобальных переменных:
var EndPositions = {};
// ...
EndPositions['id_one'] = 10;
EndPositions['id_two'] = 20;
// ...
if (NewPosition <= EndPositions[id]){
RightNav.addClass('disabled');
}
Более чистый способ (ИМО):
$.fn.slider = function(...) {
// ...
$(this).data('end-position', visibleWidth - totalWidth);
// ...
};
Итак, если вы это сделали
$('.slider').slider(...);
Вы можете получить доступ к переменной end-position
как это
$('.slider').data('end-position');
РЕДАКТИРОВАТЬ:
Если вам нужно найти конечную позицию ползунка по id, вы можете сделать это следующим образом:
<div class="slider" data-id="1"></div>
<script type="text/javascript">
$(document).ready(function() {
$('.slider').slider(...);
... = $('.slider[data-id=1]').data('end-position');
});
</script>
Правильно, вы можете:
window["EndPosition" + id]
так что у вас есть:
if (NewPosition <= window["EndPosition" + id]) ...
window
- контейнер для всех глобальных варов.
ура
да, вы можете использовать json array, вы можете сделать что-то вроде этого:
var sliderObject = [
{ "EndPosition":VisibleWidth - TotalWidth },
{ "ID": id },
];
А затем просто проверьте:
NewPosition <= sliderObject [EndPosition][0]
Взгляните на: http://www.w3schools.com/json/json_syntax.asp