Jquery, что ломтик возвращает при неудаче? - PullRequest
0 голосов
/ 24 сентября 2010

Я не могу найти это нигде, как проверить, возвращает ли slice элементы, все еще находящиеся в списке? Нравится $('.class').slice(n-th,n-th);

Когда n-тые переменные увеличиваются по всему индексу возвращаемого класса путем среза, как узнать, когда срез возвращает недопустимый индекс? Надеюсь, я хорошо это объяснил.

Вот пример кода того, что я пытаюсь выполнить:

$(window).scroll(function() {
    if(!($('embed').slice(p1,p2).show())){
        $(window).unbind('scroll');
    }
    ++p1;++p2;
}

Кроме того, почему мое мероприятие не является обязательным?

Спасибо за любую помощь :)

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Просто протестируйте slice().length, чтобы увидеть, получили ли вы что-нибудь обратно, или вы можете проверить это для определенного length.

В вашем случае:

var $mySlice = $('embed').slice(p1,p2); // <== Store slice

  // Check that slice returned 1+ elements
if( $mySlice.length ) { 

      // show them if yes
    $mySlice.show();
} else {

      // unbind if no
    $(window).unbind('scroll');
}

В общем, вы хотите посмотреть:

$( ... ).slice( ... ).length

Вышеприведенное просто проверяет наличие 1+ элементов. Если вы отсекаете элементы N и хотите убедиться, что вы получите полный и законченный результат, просто измените на

if ( $mySlice.length == N ) {

jQuery's .slice() никогда не возвращает вещи за пределы конца оставшихся элементов. Он достаточно умен, чтобы знать, когда остановиться.

Если вы дадите ему конечную точку, которая превышает количество элементов, она вернет существующие элементы, затем остановится без ошибки времени выполнения.

1 голос
/ 24 сентября 2010

Slice просто возвращает пустой массив, если вы передадите ему неверные аргументы.

...