целевой ввод по типу и имени (селектор)

Рассмотрим сигнатуры метода

public static void foo(int a)

и

public static void foo(Integer a)

. Перед боксом и распаковкой вызов foo(1) не был бы двусмысленным. Для обеспечения совместимости с более ранними версиями Java вызов остается недвусмысленным. Поэтому первая фаза разрешения перегрузки не позволяет запускать бокс, unboxing или переменную arity invocation, которые были введены одновременно. Вызов переменной arity - это когда вы вызываете метод varargs, передавая последовательность параметров для последнего аргумента (а не массива).

Однако разрешение method(1) для ваших сигнатур методов допускает бокс и распаковку потому что для обоих методов требуется вызов переменной arity. Поскольку бокс разрешен, применяются обе подписи. Обычно, когда применяются две перегрузки, выбирается наиболее конкретная перегрузка. Однако ни одна из ваших подписей не является более конкретной, чем другая (потому что ни int, ни Integer не являются подтипом другого). Поэтому вызов method(1) неоднозначен.

Вы можете сделать этот компилятор, передав вместо него new int[]{1}.

129
задан user357034 10 July 2010 в 23:01
поделиться

3 ответа

Вам нужен селектор множественных атрибутов

$("input[type='checkbox'][name='ProductCode']").each(function(){ ...

или

$("input:checkbox[name='ProductCode']").each(function(){ ...

Было бы лучше использовать класс CSS для идентификации тех, которые вы хотите выбрать, однако многие современные браузеры реализуют метод document.getElementsByClassName, который будет использоваться для выбора элементов и будет намного быстрее, чем выбор по атрибуту name

276
ответ дан 24 November 2019 в 00:15
поделиться

Вы можете комбинировать селекторы атрибутов таким образом:

$("[attr1=val][attr2=val]")...

чтобы элемент удовлетворял обоим условиям. Конечно, вы можете использовать это для более чем двух условий. Также не делайте [type=checkbox]. У jQuery есть селектор для этого, а именно :checkbox так что в итоге получится:

$("input:checkbox[name=ProductCode]")...

Однако селекторы атрибутов работают медленно, поэтому рекомендуется использовать селекторы ID и класса, где это возможно. Вы можете изменить свою разметку на:

<input type="checkbox" class="ProductCode" name="ProductCode"value="396P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="401P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="F460129">

что позволит вам использовать гораздо более быстрый селектор:

$("input.ProductCode")...
21
ответ дан 24 November 2019 в 00:15
поделиться
input[type='checkbox', name='ProductCode']

Это способ CSS, и я почти уверен, что он будет работать в jQuery.

6
ответ дан 24 November 2019 в 00:15
поделиться
Другие вопросы по тегам:

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