Я думаю, что существует много беспорядка и плохих ответов здесь.
, В первую очередь, const
поля static
участники ( не члены экземпляра ).
раздел Check 10.4 Констант спецификации языка C#.
Даже при том, что константы считают статическими участниками, объявление константы ни требуют, ни позволяет статический модификатор.
, Если public const
участники статичны, нельзя было бы полагать, что константа создаст новый Объект.
, Учитывая это, следующие строки кода делают точно то же самое относительно создания нового Объекта.
public static readonly string Empty = "";
public const string Empty = "";
Вот примечание от Microsoft, которая объясняет различие между 2:
ключевое слово только для чтения отличается от ключевого слова константы. Поле константы может только быть инициализировано в объявлении поля. Поле только для чтения может быть инициализировано или в объявлении или в конструкторе. Поэтому поля только для чтения могут иметь различные значения в зависимости от используемого конструктора. Кроме того, в то время как поле константы является постоянным временем компиляции, поле только для чтения может использоваться для констант этапа выполнения...
, Таким образом, я нахожу, что единственным вероятным ответом здесь является Jeff Yates.
Метод jQuery add - это то, что вам нужно:
Добавляет дополнительные элементы, соответствующие заданному выражению, в набор соответствующих элементов
var a = $("#a");
var b = $("#b");
var combined = a.add(b)
Не забывайте также, что селекторы jQuery поддерживают синтаксис запятой CSS. Если вам нужно объединить две произвольные коллекции, все предложения актуальны, но если это так же просто, как что-то сделать с элементами с идентификаторами a
и b
, используйте $ ('# a, # b')
.
Вы можете просто поместить их в массив:
$.each([a, b], function()
{
this.click(function () { });
});
Я просто попробовал возиться с этим и нашел кое-что очень интересное:
$(a & b).click(function() { /* WORKS! */ });
supersweet!
Edit: Теперь мне очень неловко, что я не проверил это должным образом. На самом деле это было то, что событие щелчка было помещено на все ... Не знаю, почему это происходит, хотя ...
попробуйте это: мило и просто.
var handler = function() {
alert('hi!');
}
$.each([a,b], function() {
this.click(handler);
}
Кстати, этот метод не стоит проблем.
Если вы уже знаете, что существует всего два из этих методов, то я думаю, что лучшим вариантом будет
a.click(handler);
b.click(handler);
Ура!
На этот вопрос уже был дан ответ, но я думаю, что более простой и оптимизированный способ достичь той же цели - полагаться на сходство между моделями селекторов jQuery и CSS и просто делать:
$("#a, #b").click(function () {/* */});
Я использую это часто и никогда не видел, чтобы это работало (я не могу говорить о версиях jQuery до 1.3.2, хотя я не тестировал это там). Надеюсь, это когда-нибудь поможет кому-нибудь.
ОБНОВЛЕНИЕ: Я просто перечитал ветку и пропустил ваш комментарий о том, что узлы, о которых идет речь, уже сохранены в переменных, но этот подход все равно будет работать с одной незначительной поправкой. вы захотите сделать:
var a = $("#a");
var b = $("#b");
$(a.selector+", "+b.selector).click(function () {/* */});
Одна из замечательных вещей, которые делает jquery, заключается в том, что он добавляет несколько специфических свойств jquery к узлу, который он возвращает (селектор, который является исходным селектором, используемым для захвата этого узла, является одним из них) . У вас могут возникнуть проблемы с этим, если используемый вами селектор уже содержал запятые. Ее также, вероятно, спорно, если это проще, то только с помощью надстройки, но забавный пример того, как прохладный JQuery может быть:.)