【问题标题】:Select input type image when id has a particular pattern当 id 具有特定模式时选择输入类型图像
【发布时间】:2018-04-30 15:21:07
【问题描述】:

我有许多文件类型的输入。他们的 id(s) 遵循这样的模式:- image_1image_2image_3

此通配符$('input:file[id^="image_"]') 选择所有id 以image_ 开头的输入类型文件

上面的通配符有个问题,就是输入类型为id="image_img"的文件也会被选中。

如何选择 id 以image_ 开头并以数值结尾的输入类型文件?

【问题讨论】:

  • 改用类。它更快、更语义化,意味着您在以后修改 HTML 时不会遇到同样的问题。
  • 不,不能使用类。为什么,我会在编辑部分的问题中向您解释。
  • 你可能最好为你不想选择的元素使用不同的名称(即不应该以'image_'开头),但另一方面你总是可以使用 not() ,例如$('input:file[id^="image_"]:not(#image_img)')

标签: jquery jquery-selectors find


【解决方案1】:

据我所知,没有直接的捷径。然而,一个好的方法是过滤掉其 ID 上的元素:

$('input:file[id^="image_"]')
    .filter(function() {
        return this.id.match(/^image_\d+$/);
    })

【讨论】:

    【解决方案2】:

    选择 id 以 (^=) image_ 开头且不以 (.not($=)) _img 结尾的输入。

    console.log($('input:file[id^=image_]').not('[id$=_img]').get())
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="file" id="image_1" />
    <input type="file" id="image_2" />
    <input type="file" id="image_3" />
    <input type="file" id="image_img" />

    【讨论】:

    • 这是一个很好的解决方案,但假设有多个项目的 id 为 image_imgimage_lalaimage_hula 等。在这种情况下,这是一个受限解决方案。
    • 那么 31piy 的回答会更好。
    • 这就是我说使用类的原因;)这样做,即。独占,意味着添加另一个类似名称的字段只会再次破坏它。如果您使逻辑具有包容性,它会更加健壮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2012-08-09
    • 2013-01-24
    相关资源
    最近更新 更多