Индекс в пользовательских селекторах не работает должным образом

0

Вот мой код, определяющий новую настраиваемую селекторную группу.

(function($) {
    $.extend($.expr[':'], {
        group: function(element, index, matches, set) {
            var num = parseInt(matches[3], 10);

            if (isNaN(num)) {
                return false;
            } 

            console.log('The value of index element is '+index);

            return index%(num * 2)<num;
        }
    });
})(jQuery);

Затем в моем document.ready(function(){ }); когда я называю простым

$('tr:group(3)')

Консоль.log говорит следующее ->

'83' The value of index element is 0

Это означает, что индекс постоянно 0, и я не могу знать, почему. Любая помощь будет оценена.

Пожалуйста, проверьте следующий FIDDLE http://jsfiddle.net/hardeepmehta/KkTQX/

Теги:

1 ответ

1
Лучший ответ

Какую версию jQuery вы используете? В этой скрипте с 1.7.2 он возвращает ненулевые индексы, но начиная с 1.8.3, индексы равны нулю.

В jQuery 1.8 и новее вы должны использовать новый Sizzle API для создания настраиваемых селекторов.

Пример, который они дают:

Sizzle.selectors.pseudos.not =
Sizzle.selectors.createPseudo(function( selector /* the argument for not */ ) {
    var matcher = Sizzle.compile( selector );
    return function( elem ) {
        return !matcher( elem );
    };
});
  • 0
    Я использую jQuery 1.9.0, который включает в себя Sizzle.js.
  • 0
    Хороший вопрос, канон. Я не думал об этом, потому что скрипки не касаются этого кода вообще.
Показать ещё 2 комментария

Ещё вопросы

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