我有一个元素标识符数组,这些标识符是从一些服务器端验证返回的。这些ID没有以“#”为前缀。是否有jQuery方法可以直接通过它们的ID选择所有元素,而不必遍历数组并为每个成员添加“#”前缀?
我有一个元素标识符数组,这些标识符是从一些服务器端验证返回的。这些ID没有以“#”为前缀。是否有jQuery方法可以直接通过它们的ID选择所有元素,而不必遍历数组并为每个成员添加“#”前缀?
var ids = ['div1', 'div2', 'div3'];
$('#' + ids.join(',#')).click(function() { alert('hi'); });
不要忘记使用“老式”的getElementById-它不需要对id进行哈希。然后只需将节点提供给jQuery即可获得jQuery对象:
var ids = ['jq-primarySearch', 'jq-n-CSS'];
var nodes = $.map( ids, function(i) { return document.getElementById(i) } );
var jqObj = $(nodes);
$.map(ids, document.getElementById)
确实不起作用! - Oleh Prypin$("[id=id_value]"); // returns 1 id
$("[id^='id_]") // returns multiple
(注意 - 我没有尝试过这个 - 这是我脑海中的想法)
假设你的数组是 "arr"。
你可以将字符串标识符的数组映射到jQuery对象的数组中,然后使用通常的jQuery选择器将它们全部连接起来,不是吗?
$($.map(arr, function(id) { return $('#' + id); }))
你可以自己进行节点选择,然后将结果包装起来:
$(document.getElementById(id))
使用变量选择器可以避免构造一个字符串选择器,jQuery 只需要解析它并执行相同的操作。此外,您不必担心转义字符,例如“:”和“.”,这些字符在 ID 中是有效的,但在选择器中表示其他含义。
$("#"+id); //gives you one element