Как мне использовать / считать jQuery .find () - PullRequest
6 голосов
/ 05 января 2012

Я использую плагин jQuery, который я нашел здесь: http://tutorialzine.com/2011/03/photography-portfolio-shutter-effect/, за исключением того, что я немного его изменил.

Он по-прежнему работает так, как положено, но я добавилКнопка «Следующая», в которой пользователь может использовать кнопку для перехода к следующему изображению, и затем она приостанавливает интервал для одной петли, чтобы не переходить к следующему изображению слишком быстро.

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

var positionInt

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

Как использовать это вместе с объектом li, созданным этой строкой:

var container = $('#container'),
    li = container.find('li');

, чтобы открыть правильный элемент li?

Кроме того, как я могу найтидлина объекта li?Я пробовал li.size (), li.count () и li.length, но ни один из них не работал.

Или есть способ, использующий только метод .find (), чтобы открыть элемент li перед видимым в данный моментодин?Вот как он делает это, чтобы идти вперед :

li.filter(':visible:first').hide(); // Hid the only visible li
if(li.filter(':visible').length == 0){
li.show(); // if nothing is visible load a li (Im not really sure what this is pointing at, but it loads the next li)
}

Приветствия

Ответы [ 2 ]

13 голосов
/ 05 января 2012

Вы можете получить количество li как:

var nr_li = $("#container ul li").length;

Если вам известен текущий индекс используемого в настоящее время <li>, вы можете получить предыдущий индекс, выполнив:

$prev_li = $("#container ul li:eq(" + (index-1) + ")");

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

Еще одна вещь, которую вы можете сделать, - это циклически перемещаться по <li> и, например, добавлять каждый из них в массив. Затем вы можете просто извлечь предыдущую из вашего массива.

var array_li = new Array();

$('#container li').each(function() {
   array_li.push($(this));
});
5 голосов
/ 05 января 2012

И length, и size() будут работать для подсчета количества элементов в объекте jquery.

http://jsfiddle.net/KeKPb/

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

Вам нужно будет определить, что означает "не работает", потому что оба метода совершенно допустимы.

...