При присоединении события к нескольким элементам в каждый идет

Я думаю, что существует много беспорядка и плохих ответов здесь.

, В первую очередь, const поля static участники ( не члены экземпляра ).

раздел Check 10.4 Констант спецификации языка C#.

Даже при том, что константы считают статическими участниками, объявление константы ни требуют, ни позволяет статический модификатор.

, Если public const участники статичны, нельзя было бы полагать, что константа создаст новый Объект.

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

public static readonly string Empty = "";
public const string Empty = "";

Вот примечание от Microsoft, которая объясняет различие между 2:

ключевое слово только для чтения отличается от ключевого слова константы. Поле константы может только быть инициализировано в объявлении поля. Поле только для чтения может быть инициализировано или в объявлении или в конструкторе. Поэтому поля только для чтения могут иметь различные значения в зависимости от используемого конструктора. Кроме того, в то время как поле константы является постоянным временем компиляции, поле только для чтения может использоваться для констант этапа выполнения...

, Таким образом, я нахожу, что единственным вероятным ответом здесь является Jeff Yates.

52
задан Community 23 May 2017 в 01:53
поделиться

6 ответов

Метод jQuery add - это то, что вам нужно:

Добавляет дополнительные элементы, соответствующие заданному выражению, в набор соответствующих элементов

var a = $("#a");
var b = $("#b");
var combined = a.add(b)
88
ответ дан 7 November 2019 в 09:03
поделиться

Не забывайте также, что селекторы jQuery поддерживают синтаксис запятой CSS. Если вам нужно объединить две произвольные коллекции, все предложения актуальны, но если это так же просто, как что-то сделать с элементами с идентификаторами a и b , используйте $ ('# a, # b') .

38
ответ дан 7 November 2019 в 09:03
поделиться

Вы можете просто поместить их в массив:

$.each([a, b], function()
{
    this.click(function () { });
});
8
ответ дан 7 November 2019 в 09:03
поделиться

Я просто попробовал возиться с этим и нашел кое-что очень интересное:

$(a & b).click(function() { /* WORKS! */ });

supersweet!

Edit: Теперь мне очень неловко, что я не проверил это должным образом. На самом деле это было то, что событие щелчка было помещено на все ... Не знаю, почему это происходит, хотя ...

2
ответ дан 7 November 2019 в 09:03
поделиться

попробуйте это: мило и просто.

var handler = function() {
    alert('hi!');
}
$.each([a,b], function() {
    this.click(handler);
}

Кстати, этот метод не стоит проблем.

Если вы уже знаете, что существует всего два из этих методов, то я думаю, что лучшим вариантом будет

a.click(handler);
b.click(handler);

Ура!

0
ответ дан 7 November 2019 в 09:03
поделиться

На этот вопрос уже был дан ответ, но я думаю, что более простой и оптимизированный способ достичь той же цели - полагаться на сходство между моделями селекторов 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 может быть:.)

16
ответ дан 7 November 2019 в 09:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: