【问题标题】:Is there a concise jQuery selector for a list of specific input types (type='text', etc)?是否有用于特定输入类型列表(type='text' 等)的简洁 jQuery 选择器?
【发布时间】:2012-04-29 14:56:02
【问题描述】:

有没有更简洁的方法来做到这一点?

// exclude all HTML 4 except text and password, but include HTML 5 except search
var inputSelector = "textarea,input[type='text'],input[type='password'],input[type='color']," +
    "input[type='date'],input[type='datetime'],input[type='datetime-local']," +
    "input[type='email'],input[type='month'],input[type='number'],input[type='range']," +
    "input[type='tel'],input[type='time'],input[type='url'],input[type='week']";

注意:我不能使用 .Not() 函数,因为该选择器将在 .delegate() 函数中使用。另外,最好让选择器默认包含未来的输入类型(HTML 6 >)。

答案:

这就是我现在所拥有的。比以前好多了。如果可以进一步完善,请告诉我。

// exclude all HTML 4 except text and password, but include HTML 5 except search
var inputSelector = "textarea,input:not([type='checkbox'],[type='radio'],[type='button']," +
    "[type='image'],[type='submit'],[type='reset'],[type='file'],[type='search'])";

请注意,它还包括 input 和 textarea,这也意味着默认情况下将包括 HTML 规范的未来添加(对于那些认为不可能的人)。

【问题讨论】:

  • 如果您需要特殊情况,那么您别无选择
  • .delegate()从什么时候开始支持:not()
  • "另外,最好让选择器默认包含未来的输入类型 (HTML 6 >)。"你真的期望这样的选择器如何工作?
  • $("input:not([type='radio'], [type='text'])") .. 既然您的输入类型很少,为什么不包括在内使用那些?

标签: jquery jquery-selectors textinput


【解决方案1】:

似乎委托()方法在选择器不是字符串时不起作用。要解决这个问题,只需将您的逻辑放在您的委托处理程序中

//Input types I do not want to select
var typeArray = ["text", "date"];

$("form").delegate("input", "click", function() {
    if($.inArray(this.type, typeArray) === -1) {
        //Put your logic here
    }
});

【讨论】:

  • 不,我正在尝试获取除特定类型列表之外的所有输入,而不是特定类型。
  • 而不是让 jQuery 解析一个复杂的选择器字符串,这允许您传递一个函数选择器,这样效率更高。
  • 这很好,但是如何使用 .delegate() 函数呢?
  • 是的,我无法让它与选择器一起工作,所以我只是将逻辑卡在委托事件处理程序中。
  • 如果我只是想获得特定类型的输入,我可能会使用它,但就目前而言,选择器更干净。然而,这给了我一个想法,我曾经在它们已经绑定后过滤我的结果。
【解决方案2】:

如果你想过滤掉多种类型,你可以这样做:

$('input[type!="radio"][type!="text"]')

【讨论】:

    【解决方案3】:

    MДΓΓ БДLL 和 xFortyFourx 都给了我这个解决方案,结果证明这是我正在寻找的最佳答案,但不知道为什么它在评论而不是答案中得到了回答。

    $("input:not([type='radio'], [type='text'])")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-25
      • 2022-01-14
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2010-09-06
      相关资源
      最近更新 更多