У меня есть следующий код:Почему Cant Jquery выбирает изображение с помощью Id без имени при доступе к атрибуту?
function myfun(arg) {
var info = $(arg).attr("myinfo");
$('#output').html((typeof info) + ": " + info);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img id="A" myinfo="kittens" src="https://placekitten.com/200/200">
<img id="B" name myinfo="kittens" src="https://placekitten.com/200/200">
<ul>
<li>
<button onclick="myfun(A)">Doesn't Work</button>
</li>
<li>
<button onclick="myfun(B)">Works</button>
</li>
</ul>
<p id="output">Output here</p>
Когда я пытаюсь получить доступ к атрибуту myinfo
в образе Id A
, я не могу выбрать изображение Id для доступа myinfo
с помощью JQuery.
Однако, если свойство name присутствует, тогда я легко могу выбрать myinfo
с использованием того же синтаксиса. Не имеет значения, укажу ли я конкретное имя, даже работает пустой.
Что здесь происходит? Я попытался получить доступ с помощью $("#" + arg).attr("myinfo");
, и это тоже не сработало.
Вот ссылка на JSFiddle также: JSFiddle Link
Вы полагаться на браузер для установки '' window.A' и window.B' для вас, на основе 'id' элементов, которая не является отличная идея для начала. Однако по какой-то причине ссылка на 'A' сама по себе не работает, если у нее нет атрибута' name' (см. [Скрипт] (https://jsfiddle.net/RoryMcCrossan/8dm3j9f1/5/) - 'window.A' не определено). Я не знаю, почему это так. Также обратите внимание, что 'myinfo' не является допустимым атрибутом, поэтому ваш HTML недопустим, что может вызвать проблемы в IE и более старых браузерах. Если вы хотите хранить пользовательскую информацию с помощью элемента, используйте атрибут 'data- *' –
Это еще более запутанно, когда атрибут 'name' в элементе' img' устарел в соответствии с [W3C] (https: // www. w3.org/TR/html-markup/img.html). Я могу только думать, что это странность браузера, учитывая ваше странное использование пропущенных глобальных ссылок на элементы. –
Странно, что это только кажется проблемой в атрибуте onclick. Если я устанавливаю точку останова в 'myfun', я могу получить доступ к' A' в отладчике JS. – Barmar