如何找到紧跟错误范围的jquery元素

时间:2012-08-20 20:32:01

标签: jquery jquery-plugins twitter-bootstrap jquery-validate

我正在使用twitter bootstrap和jquery validate插件

我有一个表格行,如下所示:

<div class="form_row" >
<div class="control-group">
    <label class="control-label" for="input01">home phone</label>
      <div class="controls">
        <input type="number" class="span4" class="input-xlarge" id="home_phone" name="home_phone" value="<?php echo $this->property->home_phone ?>" rel="popover" data-content="Re-enter your home phone." data-original-title="homephone" >
        <input type="number" class="span4" class="input-xlarge" id="cell_phone" name="cell_phone" value="<?php echo $this->property->cell_phone ?>"  rel="popover" data-content="Re-enter your cell_phone." data-original-title="cell_phone" >
      </div>
</div>

验证后,当我在firebug中查看它时,带有错误的输入后跟span.error。我想选择这些输入。到目前为止,我有:

$.filter(function() { return $(this).next("span.error"); })

但我收到以下错误:

TypeError:elems未定义 [打破此错误]

返回elems.length === 1?

有人可以帮我一把吗?

谢谢,

比尔

3 个答案:

答案 0 :(得分:4)

你试过这个吗?

$("input").filter(function() { return $(this).next("span.error").length == 1; })

答案 1 :(得分:0)

试试这个:

$('input').filter(function(index) { return typeof($(this).next("span.error")!='undefined'); })

答案 2 :(得分:0)

只需选择span.error元素,然后向后处理input元素:

​var inputs = $('span.error').prev('input');

JS Fiddle demo

顺便说一下,对于它的价值,这种方法(尽管只是略微)比使用filter()方法更快(在Chromium 19中)。显然,这是微观优化。当然,假设支持document.querySelectorAll()previousElementSibling的浏览器,使用本机DOM方法甚至更快。但是,坦率地说,不是我想象的那么多。

参考文献: