Если удалить CSS, который скрывает ваши материалы, вы увидите, что она работает просто отлично. И вы поймете, почему ... Когда входы скрыты, вы нажимаете на метку, а не на ввод, и обе эти метки появляются ПЕРЕД первым входом. Таким образом, вы всегда выбираете первый вход, а не второй.
Updated Fiddle
Чтобы это исправить, либо обернуть этикетки вокруг входов, например, так:
<label for="file">A picture <input type="file" id="file" class="1"/></label>
<br />
<label for="file2">Another picture <input type="file" id="file2" class="2"/></label>
или поставить метку на второй вход непосредственно перед входом, например, так:
<label for="file">A picture </label>
<input type="file" id="file" class="1"/>
<br />
<label for="file2">Another picture </label>
<input type="file" id="file2" class="2"/>
ПРИМЕЧАНИЕ. Недействительно HTML иметь несколько элементов с одинаковым идентификатором. В приведенных выше примерах я изменил идентификатор на втором входе на «file2»
Да, идентификаторы должны быть уникальными, но на самом деле это не связано с проблемой. Если вы измените ID на втором входе, вы увидите, что это не устраняет проблему. Событие JQuery не привязано идентификатором. Он привязан к типу ввода. –
Работает для меня, если я также изменил содержимое