У меня есть 3 кнопки с одинаковым идентификатором, мне нужно получить значение каждой кнопки при нажатии.

<button id="xyz" type="button" class="btn btn-primary" value="1">XYZ1</button>
<button id="xyz" type="button" class="btn btn-primary" value="2">XYZ2</button>
<button id="xyz" type="button" class="btn btn-primary" value="3">XYZ3</button>

Вот мой текущий jQuery script:

$("#xyz").click(function(){
      var xyz = $(this).val();
      alert(xyz);
});

, но он работает только для первой кнопки, нажатие на другие кнопки игнорируется.

есть ли вообще …?

У вас недопустимый HTML, вы не можете иметь более одного элемента на странице с одинаковыми id Глядя на вывод

цитированием спецификации :

7.5.2 Идентификаторы элемента: id и атрибуты класса

id = name [CS]
подход. Я столкнулся с аналогичной проблемой для выборочной обработки действий, основанных на обещаниях, и это решение было более гибким.

, и, возможно, это не так просто, но лучше, чем ничего. Посмотрите: : изменить с idclass,

<button type="button" class="btn btn-primary xyz" value="1">XYZ1</button>
<button type="button" class="btn btn-primary xyz" value="2">XYZ2</button>
<button type="button" class="btn btn-primary xyz" value="3">XYZ3</button>

и Ну, это немного сбивает с толку! В одном из моих кусочков кода, :

$(".xyz").click(function(){
    alert(this.value);
    // No need for jQuery :$(this).val() to get the value of the input.
});

, но это работает только для селектора первой кнопки

jQuery #id селектор , упомянутых ниже. :

Каждое значение идентификатора должен использоваться только один раз в документе. Если более одного элемента был присвоен один и тот же идентификатор, запросы, которые используют это ID выберет только первый соответствующий элемент в DOM. На это поведение нельзя полагаться, однако ; документ с более чем одним элементом, использующим один и тот же идентификатор, недопустим.

Если вы посмотрите на источник jQuery, который вы можете увидеть, когда вызываете $ с идентификатором selecor- ($("#id")), jQuery вызывает собственный javascript document.getElementById Как использовать:

// HANDLE: $("#id")
} else {
    elem = document.getElementById( match[2] );
}

Хотя в спецификации из document.getElementById они не упомянули, что оно должно возвращать первое значение, вот как большинство (возможно, все?) браузеры реализовали это.

на Jake Archibald на HTML5 Rocks.

ID означает «Идентификатор» и действителен только один раз для каждого документа. Так как ваш HTML неверен на данный момент, некоторые браузеры выбирают первый, а некоторые последний встречающийся элемент с этим идентификатором.

Изменение идентификаторов для имен было бы хорошим шагом.

Затем используйте $('button[name="xyz"]').click(function(){

Чтобы получить случайное число $('button#xyz') селектор, вместо этого он будет работать. Это взлом, но это все еще недействительный HTML.

это также работает, если у вас есть несколько элементов с одинаковым идентификатором.

 $("button#xyz").click(function(){
  var xyz = $(this).val();
  alert(xyz);
 });

вы можете проверить говорится, что

Хотя изменение идентификатора на класс лучше, вы можете получить все элементы с одинаковым идентификатором, используя атрибут равен селектору :

$('[id="xyz"]')

Или это, чтобы получить только кнопки с идентификатором xyz:

$('button[id="xyz"]')

Или div с id xyz:

$('div[id="xyz"]')

и т. д.

В качестве альтернативы вы можете использовать «Атрибут содержит селектор» , чтобы получить все элементы с идентификаторами, которые содержат «xyz» :

$('[id*="xyz"]')

Конечно, это означает, что все элементы с идентификатором, которые частично содержат «xyz», будут выбраны этим.

Вы не можете иметь один и тот же идентификатор, потому что идентификатор уникален в HTML страницы. Измените его на класс или другое имя атрибута.

$('attributename').click(function(){ alert($(this).attr(attributename))});