2013-09-19 6 views
0

Рассмотрим следующий JavaScript:С помощью селекторов jQuery рекурсивно?

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 бросает:

Error: Syntax error, unrecognized expression: name=ajaxState

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

+3

ли вы на самом деле означает '' и не '' ? – harpo

+0

@harpo, фантастический улов. Это безумие, как это реально проявляется в браузере, действительно! –

ответ

3

name=ajaxState является attribute equals selector, он должен быть заключен в []

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'); 
Смежные вопросы