Рассмотрим следующий JavaScript:
function checkAvailability(o) {
o = $(o);
var p = $(o[0].parentNode);
if (!o.val()) {
return;
}
p.children('name=ajaxState').attr('src', '/images/busy.gif');
который пытается использовать следующий HTML:
<div>
<image name="ajaxState"
src="/images/blank1616.png"
style="float: right; width: 24px; height: 24px; margin-right: 1em;" />
<input name="displayname" id="displayname" type="text"
placeholder="Display Name"
check-length min="1" max="45"
onblur="checkAvailability(this);" />
</div>
где o
- обернутый элемент input
, а p
- обернутый элемент div
. То, что я хочу сделать, - это получить элемент image
именем ajaxState
внутри элемента div
, но JavaScript бросает:
Ошибка: ошибка синтаксиса, нераспознанное выражение: name = ajaxState
Как я могу использовать один и тот же синтаксис селектора, чтобы получить здесь дочерние элементы?
name=ajaxState
- это атрибут, равный селектору, он должен быть заключен в []
p.children('[name=ajaxState]').attr('src', '/images/busy.gif');
Его можно немного упростить
function checkAvailability(o) {
o = $(o);
if (!o.val()) {
return;
}
var p = o.parent()
p.children('[name=ajaxState]').attr('src', '/images/busy.gif');