JQuery ID в имени переменной

0

Я создаю слайдер 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');    
            }
  • 0
    Спасибо всем за ваши ответы, я проверю их сейчас.
Теги:

5 ответов

2

Я бы предложил использовать обозначение объекта и скобки:

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]; // ?
2

Было бы чище использовать объект для размещения ваших конечных позиций, а не использовать несколько глобальных переменных:

var EndPositions = {};

// ...

EndPositions['id_one'] = 10;
EndPositions['id_two'] = 20;

// ...

if (NewPosition <= EndPositions[id]){
    RightNav.addClass('disabled');    
}
1

Более чистый способ (ИМО):

$.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>
0

Правильно, вы можете:

window["EndPosition" + id]

так что у вас есть:

   if (NewPosition <= window["EndPosition" + id]) ...

window - контейнер для всех глобальных варов.

ура

  • 1
    Как вы думаете, почему код выполняется в глобальном пространстве, а не в какой-то области?
-1

да, вы можете использовать json array, вы можете сделать что-то вроде этого:

var sliderObject = [
{ "EndPosition":VisibleWidth - TotalWidth }, 
{ "ID": id  }, 
];

А затем просто проверьте:

NewPosition <= sliderObject [EndPosition][0] 

Взгляните на: http://www.w3schools.com/json/json_syntax.asp

Ещё вопросы

Сообщество Overcoder
Наверх
Меню