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命名的元素,但是 JavaScript 会抛出:ajaxStatediv

错误:语法错误,无法识别的表达式:name=ajaxState

如何在这里使用相同的选择器语法来获取子元素?

4

1 回答 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');
于 2013-09-19T03:08:28.480 回答