Передача нескольких индексов массива в триггер jQuery

0 Volterony [2014-02-25 18:08:00]

Возможно ли передать несколько индексов массива в событие триггера jquery.

На данный момент у меня есть массив, и я передаю следующее, чтобы вытащить только первый элемент:

$("#my-nav a").eq(1).trigger("click");

Можно ли вытащить более одного.eq(1)?

ура

javascript jquery html


3 ответа


1 Решение Karl-André Gagnon [2014-02-25 18:26:00]

Вы можете использовать это:

$("#my-nav a").filter(function(i){
    return $.inArray(i, [1,3,5]) > -1;
})

Где массив в inArray является необходимым индексом.

Сценарий: http://jsfiddle.net/2LpXM/1/

Если вы хотите передать массив в .eq(), вы не можете вставить это в свой код:

$.fn._eq = $.fn.eq;

$.fn.eq = function(arg){
    if($.isArray(arg))
        return this.filter(function(i){
            return $.inArray(i, arg) > -1;
        });
    else
        return this._eq(arg);
}

затем используйте $el.eq(arr);


1 Paul. B [2014-02-25 18:20:00]

Зависит от того, какие элементы вы используете. Вы можете использовать: lt() и: gt(), как советовал Tushar, или вы можете использовать селектор nth-child(), который довольно мощный:

$( '#my-nav a:nth-child( -n+4 )' ).trigger( 'click' ); // Only the first four elements
$( '#my-nav a:nth-child( even )' ).trigger( 'click' ); // Any even elements.

В CSS-трюках есть несколько полезных примеров nth-child.


1 Tushar Gupta [2014-02-25 18:09:00]

Вы можете использовать : lt() или : gt()

$("#my-nav a:lt(5)")


.eq() основана на нулевом индексе

поэтому первый элемент равен .eq(0)


$("#my-nav a").slice(index)