2013-05-10 4 views
0

Я звоню метод getSelectedIndex из плагина Megalist, как это:Возвращение значения из метода JQuery

var selectedIndex = $('#left-list').megalist('getSelectedIndex'); 

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

var selectedIndex = $('#left-list').getSelectedIndex(); 

и

var selectedIndex = $('#left-list').megalist().getSelectedIndex(); 

, но затем я получаю ошибку о том, что не существует метода с именем getSelectedIndex. Вставка .eq(0) для изоляции только первого объекта jQuery также не работала. Я попробовал поиск по Google, но thesefewpages, похоже, не дают ответа. Метод определяется следующим образом:

getSelectedIndex: function() { 
    return parseInt(this.selectedIndex, 10); 
}, 

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

Update: кажется, что делает что-то вроде этого:

window.selectedIndex = -1; 
// ... 
function listChangeHandler(event) { 
    // ... 
    window.selectedIndex = event.selectedIndex; 
    // ... 
} 

// ... 

$('.favorite-link').on('click', function(){ 
    if (window.selectedIndex != -1) 
    { 
     if (window.favorites.indexOf(window.selectedIndex) == -1) 
     { 
      window.favorites.push(window.selectedIndex); 
     } 
    } 
}); 

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

ответ

1

Когда инициализируется плагин, элементы не выбраны. Просто связать change обработчик #left-list, вы можете получить selectedIndex от event объекта:

$('#left-list').on('change', function(e) { 
    var selectedIndex = e.selectedIndex; 
}); 

Check the documentation

+0

Ах, но я делаю что-то вроде этого: '$ на ('нажмите ' функция() { \t \t SelectedIndex = $ ('# левый список') megalist (' любимая-Link.').. ('getSelectedIndex'); \t \t, если (window.favorites.indexOf (SelectedIndex) = -1!) \t \t { \t \t \t window.favorites.push (SelectedIndex); \t \t} \t}); «Должен ли я прибегать к использованию глобальной переменной? – Vilinkameni

+0

Я обновил вопрос обходным путем. Я все равно хотел бы знать, можно ли это сделать без использования глобальных переменных. – Vilinkameni

1

Когда выбран элемент в megalist, класс .megalistSelected добавляется в список чтобы вы могли искать <li> с этим классом с помощью jQuery и получить значение его атрибута list-index.

Со следующей megalist разметки в качестве примера:

<div class="megalist" id="myList2"> 
     <ul style="visibility: visible; left: 0px; top: 0px;"> 
      <li class="megalistItem megalistSelected" list-index="1" style="left: 0px; top: 41px;">Decimal: 1, Hex: 1</li> 
     </ul> 
    </div> 

Тогда ...

$('#myList2').find('.megalistSelected').attr('list-index')

... загрузят индекс элемента (один элемент был выбран конечно).

+0

Да, это может сработать, но оно по-прежнему зависит от реализации, а не от интерфейса плагина. – Vilinkameni

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