我有一个元素标识符数组,从一些服务器端验证返回。 ID不以“#”为前缀。是不是通过数组并为每个成员添加前缀#,是否有jquery方法直接按ID分配所有元素?
答案 0 :(得分:21)
你可以加入他们,就像这样:
var ids = ['div1', 'div2', 'div3'];
$('#' + ids.join(',#')).click(function() { alert('hi'); });
答案 1 :(得分:13)
你不要忘记“老式”getElementById - 它不需要散列ID。然后只需将节点提供给jQuery以获取jQuery对象:
var ids = ['jq-primarySearch', 'jq-n-CSS'];
var nodes = $.map( ids, function(i) { return document.getElementById(i) } );
var jqObj = $(nodes);
答案 2 :(得分:4)
(注意 - 我没试过这个 - 这不是我的头脑)
假设您的数组是“arr”。
你不能将你的字符串标识符数组映射到jQuery对象数组中,然后使用通常的jQuery选择器将它们全部连接起来吗?
$($.map(arr, function(id) { return $('#' + id); }))
答案 3 :(得分:3)
在jQuery中,你可以像这样选择ID
$("[id=id_value]"); // returns 1 id
如果您将其命名为id_1和id_2,则可以执行此操作
$("[id^='id_]") // returns multiple
答案 4 :(得分:1)
只需自己选择节点然后包装结果:
$(document.getElementById(id))
保存构造一个字符串选择器,jQuery只需要重新解析然后执行完全相同的操作。另外,您不必担心转义字符,例如':'和'。',这些字符在ID中有效,但在选择器中表示其他内容。
答案 5 :(得分:0)
如果您将ID作为字符串,则可以在jQuery中选择它,如此
$("#"+id); //gives you one element
如果您有多个类似的ID,请使用Elzo的建议。