İd ile başlayan html öğesini bulun


89

sorum şu:

Birden çok sayfada HTML kodum var, her birinde bazı verileri görüntülemek için bir JQgrid (jquery ızgarası) kullandım. Bu sayfaların her birinde JQgrid'i tutan öğenin "LIST_xxx" olarak adlandırıldığını biliyordum. Şimdi her sayfada bu "LIST_XXXX" öğesini alan ve bazı şeyler yapan bir javascript yapmam gerekiyor. Bir öğeyi kimliğe göre nasıl arayabilirim, ancak yalnızca ilk bölümünü bilerek (daha önce bahsettiğim gibi kimliğin):

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

Umarım kendimi netleştirmişimdir. Teşekkürler.

Yanıtlar:


173

Deneyin

$('div[id^="list_"]')

İşe yaramalı


Bu referans üzerinde jquery belgelerine göre çok daha iyi düzen.
— Yuriy Faktorovich

Bu iyi çalışıyor, teşekkürler ... if ($ ('div [id $ = "' + val + '"]'). Length> 0) bir şeyi yürütmek gibi belirli bir değerle biten bir id bulmak için kullandım;
— raphie

iyi, yukarıdaki basit kontrol kimlikleri için iyi çalışıyor. "Txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" gibi kimliklerle kontrollerim var gibi senaryolar için nasıl çalıştırılır ve "txt _ * _ city gibi kimliklere sahip tüm bu tür öğelerin sayısını istiyorum "
— Rajiv Bhardwaj

@Rajiv html üzerinde kontrole sahipseniz, bu öğelerin her birine "şehir" gibi bir sınıf eklemeniz iyi olur. Daha sonra bunları kolayca sayabilirsiniz.
— Glen Little

@Rajiv html'yi iyileştiremiyorsanız, api.jquery.com/multiple-attribute-selector'a bakın - seçicileri birleştirebilirsiniz. Örneğin, $ ("span [id ^ = 'txt _'] [id $ = '_ city']")
— Glen Little

22

Seçici ile başlar özniteliğini şu şekilde kullanmanız gerekir :

$('[id^=list_]').whatever()

iyi, yukarıdaki basit kontrol kimlikleri için iyi çalışıyor. "Txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" gibi kimliklerle kontrollerim var gibi senaryolar için nasıl çalıştırılır ve "txt _ * _ city gibi kimliklere sahip tüm bu tür öğelerin sayısını istiyorum "
— Rajiv Bhardwaj

Merhaba @Rajiv, stackoverflow'a hoş geldiniz. Yorumunuzun diğer kopyasına yanıt verdim.
— Glen Little

8

Bu öğeye ortak bir sınıf adı veya sorgulayabileceğiniz başka bir özellik verin.


Merhaba, cevabınız için teşekkürler, önerinizle ilgili sorun, JQgrid'i tutan birden fazla tablo olabileceğidir, bu nedenle: "LIST_customer", "LIST_carrier" ... vb. Ve ikisini de sadece ilk kimlik kısmına göre seçmem gerekiyor: "LIST_".
— lidermin

1
Anlıyorum, ancak hepsini bir List sınıfı yapmak bana daha okunaklı ve açıklayıcı bir yaklaşım gibi görünüyor. Her biri için, diğer yanıtlarda gösterildiği gibi, jquery'de her zaman seçiciyle başlangıçları kullanabilirsiniz.
— Yuriy Faktorovich

@lidermin Yuriy ne diyor çalışmalı. Önekiniz list_ olduğundan neden kontrollerinize "liste" gibi bir sınıf eklemiyorsunuz? Bu nedenle, bu sınıfı seçtiğinizde, bu kontrollerin her birini alacaktır. Bunu yapmanın en verimli yolu bu olacaktır.
— Josh Mein

Yuriy'in cevabı işe yarayacak. Aynı sınıfı (örneğin, "ListsINeedToFind") tüm "LIST_XXXX" öğelerinize ekleyebilir ve ardından bunları kullanarak arayabilirsiniz $('.ListsINeedToFind').
— Annabelle

Bazen aynı sınıfa ancak farklı kimliklere sahip birden fazla öğeye sahip olmak gerekir.
— Vincent


1

Belirli bir id / karakter ile biten bir öğe elde etmek için

find('[id$=someid]')

Belirli bir id / karakter ile başlayan bir element elde etmek için

find('[id*=anotherid]')

Belirli bir id / karakter ile eşleşen bir öğe elde etmek için

find('[id^=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.