JQuery - я могу pop () последний элемент из 2 массивов в одном вызове, используя className? - PullRequest
1 голос
/ 24 октября 2011

У меня есть два DIV-элемента, которым присваивается массив, называемый «стеком», используя data().

Оба DIV-элемента имеют класс .trigger.

I.хочу pop () последний элемент обоих массивов, например, так:

$('.trigger').data("stack").pop()

Однако это только удаляет последний элемент массива FIRST, хотя $('trigger').length возвращает 2.

Есть ли способ удалить последний элемент из обоих массивов в одну строку?

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Вы можете использовать 'map' -

var arr = $('.trigger').map(function() {
    return $(this).data("stack").pop()
})

Demo - http://jsfiddle.net/5gvAH/

Как указывает Pointy, это решение хорошо работает, если вам нужны значения, извлеченные из каждого массива.Если вы просто хотите выскочить из значений и не нуждаетесь в возвращаемых значениях, то предложение Pointy будет лучшим выбором.

2 голосов
/ 24 октября 2011

Вы можете сделать это:

$('.trigger').each(function() { $(this).data('stack').pop(); });

Как правило, функции jQuery, которые возвращают значение (например, ".data ()" или ".css ()", когда передается только 1 строковый аргумент), работают только с первым элементом в соответствующем массиве. Таким образом, когда вы хотите сделать что-то вроде вашей сделки, вы используете явный ".each ()", чтобы получить каждый элемент самостоятельно.

...