我的nextAll()不会起作用

时间:2012-04-19 08:37:50

标签: jquery html traversal

我知道这已经被质疑了,但我的代码无法达到我想要的目的。

<table id="dataTable" style="width: 450px;">
    <tr>
        <td><INPUT type="checkbox" name="chk[]" id="chk[]" /></td>
        <td>
            <table>
                <tr>
                    <td><INPUT type="text" style="text-align:right;width:50px;" name="qty[]" id="qty[]" /></td>
                    <td><INPUT type="text" onchange="display_details(this, this.value, 'item')" name="bar[]" id="bar[]" /></td>
                    <td><INPUT type="text" readonly="1" id="item[]" /></td>
                </tr>
                <tr>
                    <td colspan="3" align="left"><div style="border:1px solid #000;width:425px;float:left">asdasdasdasd</div></td>
                </tr>
            </table>
        </td>
    </tr>
</table>

这段代码位于一个容器内,该容器将在调用该函数时显示。
这是我的js代码:

function display_details(er, bar,ex){  
    var id = $(er).nextAll('input').css('background-color', 'red');
}

上面的代码不起作用。我也试过这段代码:

var id = $(er).css('background-color', 'red');

这完全正常。

这是我试图运行的代码。

var id = $(er).nextAll('div:first').css('background-color', 'red');
var id = $(er).nextAll('input:first').css('background-color', 'red');
var id = $(er).nextAll('input').first().css('background-color', 'red');
var id = $(er).nextAll('div').first().css('background-color', 'red');

他们都没有做任何事。

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:2)

.nextAll()适用于当前元素的兄弟姐妹。你输入没有任何兄弟姐妹,所以没有任何事情发生。

您需要使用.parent()向上移动树,然后从那里找到要更新的元素。

这适用于下一个输入:

function display_details(er, bar,ex){  
   var id = $(er).parent().nextAll('td').find('input').css('background-color', 'red');
}

工作示例 - http://jsfiddle.net/jMwyG/1/