Проект новых объектов из селектора jQuery - PullRequest
0 голосов
/ 02 сентября 2011

Есть ли способ проецировать объекты из выбора jQuery? В качестве упрощенного примера, скажем, я хочу массив объектов, соответствующих якорям моей страницы; в каждом объекте txt относится к тексту привязки, а val относится к идентификатору данных в нем.

var result = [];
$("a").each(function(i, o) {     
    result.push({ txt: $(o).text(), val: $(o).data("id") }); 
});
doSomething(result);

Можно ли сделать что-то вроде C # Select:

doSomething($("a").select(
    function(i, o) { return { txt: $(o).text(), val: $(o).data("id") }; 
});

1 Ответ

2 голосов
/ 02 сентября 2011

Вы можете использовать метод .map() для проецирования набора:

doSomething($("a").map(function(o, i) { 
    return { txt: $(o).text(), val: $(o).data("id") }; 
});

Примечание: обратите внимание, что параметры index и element инвертированы в анонимном обратном вызовепо сравнению с .each методом.Не спрашивайте почему :-) Если вас не волнует индекс, вы можете просто опустить его и сделать это:

doSomething($("a").map(function() { 
    return { txt: $(this).text(), val: $(this).data("id") }; 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...