【问题标题】:how can I find jquery elements that are immediately followed by a error span如何找到紧跟错误跨度的 jquery 元素
【发布时间】:2012-08-20 20:32:01
【问题描述】:

我正在使用 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 未定义 [打破这个错误]

return elems.length === 1 ?

谁能帮帮我?

谢谢,

比尔

【问题讨论】:

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


    【解决方案1】:

    你试过了吗?

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

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        【解决方案3】:

        只需选择span.error 元素,然后返回到input 元素:

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

        JS Fiddle demo.

        顺便说一句,就其价值而言,这种方法(尽管只是略微)比使用 filter() 方法更快(在 Chromium 19 中)。显然,这是一个微优化。当然,假设浏览器支持document.querySelectorAll()和previousElementSibling,使用原生DOM方法会更快。但老实说,并没有我预期的那么多。

        参考资料:

        【讨论】:

          猜你喜欢
          • 2022-12-29
          • 1970-01-01
          • 2011-06-16
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          • 2018-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多