Kimlik için bir değişken kullanarak jQuery'de bir öğeyi nasıl seçerim?


100

Örneğin, aşağıdaki id = "2" olan bir bölüm seçer:

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

Böyle bir şeyi nasıl yaparım:

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

Yukarıdaki sözdizimi bir hata oluşturur. JQuery belgelerini ve cevaplarını burada kontrol ettim ve başarılı olamadım.


6
Vay canına, tamamen aynı olan beş cevap ...
Zifre

Yanıtlar:


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

Daha da önemlisi ek body.find yapmak performans üzerinde hiçbir etkiye sahip değildir. Bunu yapmanın doğru yolu basitçe:

row = $('#' + row_id);

46

En kısa yol şudur:

$("#" + row_id)

Aramayı vücutla sınırlamanın hiçbir faydası yoktur.

Ayrıca, özellikle de adlandırılması idgereken başka bir veri kümeniz varsa, e-postalarınızı daha anlamlı (ve Paolo'nun cevabına göre HTML uyumlu) olarak yeniden adlandırmayı düşünmelisiniz .


Özlü severim. Bunu sadece qTip2 araç ipuçları ile kullandım, harika çalışıyor. Kullanıcı girdisine yanıt olarak bunlardan birçoğunu "tam zamanında" üretmenin performans cezasının ne olduğunu biraz merak ediyorum.
PJ Brunet

26

$('body').find();Kimliğe göre aranırken yapmak gerekli değildir; performans kazancı yoktur.

Ayrıca, bir numara ile başlayan bir kimliğin geçerli HTML olmadığını da unutmayın :

Kimlik ve İSİM simgeleri bir harfle ([A-Za-z]) başlamalı ve ardından herhangi bir sayıda harf, rakam ([0-9]), kısa çizgi ("-"), alt çizgi ("_") gelebilir , iki nokta üst üste (":") ve noktalar (".").


6

Bunu şu şekilde yapabilirsiniz:

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

1

Kodunuzla ilgili iki sorun var

  1. Bir öğeyi kimliğine göre bulmak için önüne bir "#" eklemelisiniz
  2. Bir Dize gerektiğinde bulma işlevine bir Sayı geçirmeye çalışıyorsunuz ("#" + 5'i geçmek bunu düzeltir, çünkü önce 5'i "5" e dönüştürür)

0

JQuery hakkında pek bir şey bilmiyorum ama şunu dene:

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

Düzenleme: Elbette, değişken bir sayı "#"ise, öne eklemeniz gerekir:

row_id = 5
row = $("body").find("#"+row_id);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.