JQuery: выполнение операций над массивом объектов? - PullRequest
2 голосов
/ 17 марта 2009

У меня есть 4 объекта jQuery (т.е. вещи, сконструированные с помощью $("ObjectID")), и я хотел бы выполнить одну и ту же операцию для всех из них элегантным способом. Я бы подумал, что что-то вроде этого будет работать, но это не похоже на:

$([obj1, obj2, obj3, obj4]).change(function() { otherObj.show(); });
$([obj1, obj2, obj3, obj4]).attr("disabled", "disabled");

Есть ли хороший синтаксис для этого? Это выглядит как ослепительный недосмотр. На данный момент лучшее, что я вижу, это

$([obj1, obj2, obj3, obj4]).each(
    function() { this.change(function() { otherObj.show(); }));

Ответы [ 4 ]

5 голосов
/ 17 марта 2009

Вы имеете в виду:

var obj1 = $("...");
var obj2 = $("...");
var obj3 = $("...");
var obj4 = $("...");

Если это так, вы можете превратить их в один набор:

var complete = obj1.add(obj2).add(obj3).add(obj4);

, а затем просто используйте последний набор:

complete.change(function() {
  otherObj.show();
}).attr("disabled", true);
2 голосов
/ 17 марта 2009

Это будет работать для идентификаторов:

$("#obj1,#obj2,#obj3,#obj4")

Это также будет работать для любого селектора. Вы можете комбинировать что угодно в списке через запятую.

2 голосов
/ 17 марта 2009

Попробуйте присоединить класс к объектам при их создании и выполните

$(".class")
    .change(function(){otherObj.show();})
    .attr("disabled","disabled");
0 голосов
/ 17 марта 2009

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

Вы можете очистить объект jQuery, чтобы получить массив , выполнить все, что вам нужно сделать с массивом, а затем обернуть его обратно в объект jQuery.

Существует также ряд плагинов с методами массивов и перечислимыми , которые позволяют вам манипулировать массивами и объектами jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...