【问题标题】:jQuery select input elements in a target form with a certain classjQuery在具有特定类的目标表单中选择输入元素
【发布时间】:2014-08-07 03:30:02
【问题描述】:

我在一页中有多个表单,我想将所有输入字段定位到一个目标表单(表单 ID)中,其中包含某个类(例如“has-error”)。

虽然这样可以解决问题:

target_elem = "#form_b";
$(target_elem + ":input").hasClass("has-error").removeClass("has-error");

到目前为止没有运气。我也试过玩过滤器。啧啧

【问题讨论】:

  • 你觉得#form_b:input会选择什么? hasClass 会返回什么?您是否阅读过文档? api.jquery.com/hasclass

标签: javascript jquery html input jquery-selectors


【解决方案1】:

试试这个,如果有帮助请告诉我:

  $(".has-error").each(function(){
    $(this).removeClass("has-error");


  });

现场示例:http://jsbin.com/yudaseqe/1/edit

【讨论】:

    【解决方案2】:

    试试这个...

    $("input[class*='has-error']",$(target_elem)).removeClass("has-error");
    

    或者使用这个

    $("input.has-error",$(target_elem)).removeClass("has-error");
    

    【讨论】:

    • 与类选择器相比,*= 的性能真的很差!
    【解决方案3】:

    Demo

    只需使用.class 选择器:

    $(target_elem + " input.has-error").removeClass("has-error");
    

    【讨论】:

    • 最好的;即使我不知道类选择器是否真的有用。我们也可以将removeClass 应用于目标元素中的所有输入......想知道哪种解决方案最快。
    • 不会在 DOM 中查找/搜索所有输入,而是仅搜索具有给定类的输入
    • 是的,但是 target_elem 已经是一个 ID,所以搜索不会在整个 DOM 中进行。对于要更新的​​少量输入,我应该更快不按类搜索。
    • 这是一个非常优雅的解决方案。谢谢皮特。并感谢大家的参与。
    【解决方案4】:

    无需使用':' $(target_elem + " input").hasClass("has-error").removeClass("has-error"); 应该可以工作

    请注意,您也可以忘记hasClass("has-error") 使用此类查找输入要比删除每个输入的此类而不检查它是否存在要花费更多时间。

    target_elem = "#form_b";
    $(target_elem + " input").removeClass("has-error");
    

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多