2014-01-05 4 views
0

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

$.fn.slider = function(id) {   
    var SliderID = id; 
    EndPosition = (VisibleWidth - TotalWidth); //End position for sliding 

Есть ли способ, чтобы передать идентификатор к имени переменного, что-то вроде конечного положения + идентификатора, так что я могу использовать его как в других частях коды, например, здесь

if (NewPosition <= EndPosition+id){ 
       RightNav.addClass('disabled');  
      } 
+0

Спасибо всем за ответы, я буду проверять их теперь. – user2406735

ответ

0

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

window["EndPosition" + id] 

так вы бы:

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

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

Приветствия

+1

Почему, по-вашему, код работает в глобальном пространстве, а не в какой-то области? – zerkms

2

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

var positions = { 
    'endPosition1': 'foo', 
    'endPosition2': 'bar' 
} 

var value = positions['endPosition' + id]; 

В случае, если ваши переменные являются глобальными, вы можете получить доступ к ним, как и другие свойства, но на этот раз те свойства глобальный window объект:

window['EndPosition' + id]; 

Если id s являются числовыми вы также можете вам простой массив:

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

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

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

А потом просто проверить ::

NewPosition <= sliderObject [EndPosition][0] 

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

1

уборщицей способом (ИМО):

$.fn.slider = function(...) { 
    // ... 
    $(this).data('end-position', visibleWidth - totalWidth); 
    // ... 
}; 

Так что, если вы сделали

$('.slider').slider(...); 

Вы можете получить доступ к переменной end-position как это

$('.slider').data('end-position'); 

EDIT:

Если вам нужно найти конечное положение ползунка путем ид, вы можете сделать это следующим образом:

<div class="slider" data-id="1"></div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.slider').slider(...); 

    ... = $('.slider[data-id=1]').data('end-position'); 
}); 
</script> 
Смежные вопросы