Использовать селекторы jQuery рекурсивно?

0

Рассмотрим следующий 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

Как я могу использовать один и тот же синтаксис селектора, чтобы получить здесь дочерние элементы?

Теги:

1 ответ

3
Лучший ответ

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');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню