【问题标题】:Array of IDs - how to select with JavaScript / JQuery?ID 数组 - 如何使用 JavaScript/JQuery 进行选择?
【发布时间】:2012-05-21 17:11:01
【问题描述】:

我有一个元素标识符数组,来自一些服务器端验证。 ID 不以“#”为前缀。不是遍历数组并在每个成员前面加上 # 前缀,是否有 jquery 方法可以通过它们的 ID 直接选择所有元素?

【问题讨论】:

  • 你想要一个 jQuery 答案并选择了一个 JS 答案:(
  • @Elzo,遗憾的是没有令人满意的 jq 解决方案。
  • @Elzo,我想说他的解决方案是 JS 和 jQuery 的完美结合。当 Javascript 可以做的时候,为什么还要坚持使用 jQuery。 (挖掘过去。:)

标签: jquery css-selectors


【解决方案1】:

你可以像这样加入他们:

var ids = ['div1', 'div2', 'div3'];

$('#' + ids.join(',#')).click(function() { alert('hi'); });

【讨论】:

  • 现在我们用煤气做饭!
【解决方案2】:

您不要忘记“老式”getElementById - 它不需要散列 id。然后只需将节点提供给 jQuery 以获取 jQuery 对象:

var ids = ['jq-primarySearch', 'jq-n-CSS'];
var nodes = $.map( ids, function(i) { return document.getElementById(i) } );
var jqObj = $(nodes);

【讨论】:

  • JavaScript 真的很蹩脚。 $.map(ids, document.getElementById) 确实不行!
【解决方案3】:

(注意 - 我还没有尝试过 - 这不是我的想法)

假设您的数组是“arr”。

难道不能将字符串标识符数组映射到 jQuery 对象数组中,然后使用常用的 jQuery 选择器将它们全部连接起来吗?

$($.map(arr, function(id) { return $('#' + id); }))

【讨论】:

    【解决方案4】:

    在 jQuery 中,您可以像这样通过 ID 进行选择

    $("[id=id_value]"); // returns 1 id
    

    如果您将它们命名为 id_1 和 id_2 之类的名称,则可以这样做

    $("[id^='id_]") // returns multiple 
    

    【讨论】:

      【解决方案5】:

      只需自己选择节点,然后包装结果:

      $(document.getElementById(id))
      

      节省了构造一个字符串选择器,jQuery 只需要重新解析然后做同样的事情。另外,您不必担心转义字符,如“:”和“.”,它们在 ID 中有效,但在选择器中表示其他含义。

      【讨论】:

        【解决方案6】:

        如果您将 ID 作为字符串,您可以像这样在 jQuery 中选择它

        $("#"+id); //gives you one element
        

        如果您有多个相似的 ID,请使用 Elzo 的建议。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-10
          • 1970-01-01
          • 2022-01-12
          • 2013-03-03
          • 1970-01-01
          • 1970-01-01
          • 2017-10-08
          • 2014-02-28
          相关资源
          最近更新 更多