JQuery .index () проблема - PullRequest
2 голосов
/ 22 июля 2011

У меня проблема со следующим битом кода.Я пытаюсь получить индекс элемента li, который в данный момент находится над ним.

HTML:

<div id="featured">
         <ul>
              <li class="active">foo</li>
              <li class="">bar</li>
              <li class="">giraffe</li>
         </ul>
    </div>

JavaScript:

$(document).ready(function () {
        $('#featured ul li').hover(function(){
             console.log($(this).index()); //returns -1
             console.log($('li').index($(this))); //returns integers beginning at 6
        });
    });

Первая опция в javascript, которую я использовал, возвращает -1, а вторая возвращает целые числа, начиная с 6.

Я потерян.Пожалуйста, кто-нибудь покажет мне, что я делаю не так!:)

Кроме того, я использую версию jQuery, встроенную в мою установку drupal, 1.2.6

Редактировать: Исправлен синтаксис на втором console.log в моем примере JS.

Ответы [ 4 ]

2 голосов
/ 23 июля 2011

Проблема в вашей версии jquery, я протестировал ее с 1.2.6, 1.3.2, и она работала, как вы сказали, я протестировал ее с jQuery 1.4.4, и она работает. Рассматривали ли вы обновление версии jquery или загрузку более новой версии vwrsion и использование noConflict ()?

РЕДАКТИРОВАТЬ - вы можете использовать это в качестве обходного пути:

    $('#featured ul li').hover(function(event){
         console.log($(this).prevAll('li').length); //returns 0,1,2
   });

скрипка (проверено IE9, FF5 и Chrome 12): http://jsfiddle.net/WWw4n/

0 голосов
/ 23 июля 2011

Решение:

Обновите свой jquery: <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>

На многих сайтах используется новейшая версия 1.6.2, размещенная на Google CDN, вероятноу многих посетителей, которые посещают, будет это в кеше ... если нет ... то, что бы это ни было маленьким файлом ... Вы избавите себя от головной боли, используя новейшую версию.

0 голосов
/ 23 июля 2011

Вам нужно что-то вроде этого;

 $('#featured li').index($(this));
0 голосов
/ 23 июля 2011

Я думаю, что ваш синтаксис выключен. Работает здесь: http://jsfiddle.net/rkw79/4NA3T/

$(document).ready(function () {
        $('#featured ul li').hover(function(){
             alert($(this).index()); //returns -1
             alert(('li').index($(this))); //returns integers beginning at 6
        });
    });

Можете ли вы объяснить мне синтаксис для второго предупреждения? Почему это не нуждается в нотации $? (новичок в jQuery)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...