2009-09-14 11 views
11

Mam tablicę identyfikatorów elementów, wracających z niektórych walidacji po stronie serwera. Identyfikatory nie są poprzedzone przedrostkiem "#". Zamiast przechodzić przez tablicę i dodawać przedrostek # do każdego elementu, czy jQuery oznacza bezpośredni wybór wszystkich elementów według ich identyfikatorów?Tablica identyfikatorów - jak wybrać JavaScript/JQuery?

+0

chciałeś odpowiedzi jQuery i wybrał JS jeden :( –

+0

@ Elzo, nie było niestety satysfakcjonującego rozwiązania jq –

+1

@ Elzo, powiedziałbym, że jego rozwiązanie było świetnym połączeniem JS i jQuery. utknął na jQuery - tylko wtedy, gdy zrobi to Javascript. (wykopując przeszłość :) – davidethell

Odpowiedz

12

Nie zapominasz o "starym stylu" getElementById - nie wymaga to mieszania identyfikatorów. Następnie wystarczy karmić węzłów do jQuery aby uzyskać obiekt jQuery:

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

JavaScript jest naprawdę kiepski. $ .map (ids, document.getElementById) 'nie działa naprawdę! –

3

W jQuery można wybrać przez ID jak to

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

jeśli nazwać im coś podobnego ID_1 i ID_2 można to zrobić

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

Jeśli masz identyfikator jako ciąg możesz wybierz go w jQuery, tak jak to

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

Jeśli masz wiele identycznych identyfikatorów, użyj sugestii Elzo tację.

21

może po prostu do nich dołączyć, tak:

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

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

Teraz rozmawiamy! – Andreas

+1

Teraz gotujemy na gazie! –

4

(NB - Ja nie próbowałem - to z góry na głowie)

Załóżmy, że tablica jest „arr ".

Nie można odwzorować tablicy identyfikatorów ciągów na tablicę obiektów jQuery, a następnie przekonwertować wszystkie za pomocą zwykłego selektora jQuery?

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

Just Do wyboru węzła sobie następnie zawinąć wynik:

$(document.getElementById(id)) 

oszczędza konstruowania selektor ciąg że jQuery będzie miał tylko do analizowania powrotem w, a następnie zrobić dokładnie to samo. Dodatkowo nie musisz się martwić o znaki ucieczki, takie jak ":" i ".", Które są ważne w identyfikatorach, ale oznaczają coś innego w selektorach.