Jak wybrać element w jQuery przy użyciu zmiennej dla identyfikatora?


100

Na przykład następujące elementy wybierają podział z id = "2":

row = $("body").find("#2");

Jak zrobić coś takiego:

row_id = 5;
row = $("body").find(row_id);

Powyższa składnia powoduje błąd. Sprawdziłem dokumentację jQuery i odpowiedzi tutaj bez powodzenia.


6
Wow, pięć odpowiedzi, które są dokładnie takie same ...
Zifre

Odpowiedzi:


189
row = $("body").find('#' + row_id);

Co ważniejsze, wykonanie dodatkowego body.find nie ma wpływu na wydajność. Właściwy sposób na zrobienie tego to po prostu:

row = $('#' + row_id);

46

Najkrótszym sposobem byłoby:

$("#" + row_id)

Ograniczenie poszukiwań do ciała nie przynosi żadnych korzyści.

Powinieneś także rozważyć zmianę nazwy swoich idplików na coś bardziej znaczącego (i zgodnego z HTML, zgodnie z odpowiedzią Paolo), zwłaszcza jeśli masz inny zestaw danych, który również musi zostać nazwany.


Lubię zwięzłość. Właśnie użyłem tego z podpowiedziami qTip2, działa świetnie. Jestem trochę ciekawy, jaka jest obniżka wydajności w przypadku generowania ich dużej ilości „na czas”, na przykład w odpowiedzi na dane wejściowe użytkownika.
PJ Brunet

26

Robi $('body').find();nie jest konieczne, gdy patrząc przez ID; nie ma wzrostu wydajności.

Należy również pamiętać, że posiadanie identyfikatora rozpoczynającego się od numeru nie jest prawidłowym kodem HTML :

Tokeny ID i NAZWA muszą zaczynać się od litery ([A-Za-z]) i mogą po nich następować dowolne litery, cyfry ([0-9]), łączniki („-”), podkreślenia („_”) , dwukropki („:”) i kropki („.”).



1

Z twoim kodem są dwa problemy

  1. Aby znaleźć element według identyfikatora, musisz poprzedzić go znakiem „#”
  2. Próbujesz przekazać liczbę do funkcji wyszukiwania, gdy wymagany jest ciąg (przekazanie „#” + 5 rozwiązałoby ten problem, ponieważ najpierw przekształciłoby 5 na „5”)

0

Nie wiem zbyt wiele o jQuery, ale spróbuj tego:

row_id = "#5";
row = $("body").find(row_id);

Edycja: Oczywiście, jeśli zmienna jest liczbą, musisz dodać "#"na początek:

row_id = 5
row = $("body").find("#"+row_id);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.