JQuery seçicilerindeki joker karakterler


668

Kimliğini "jander" ile başlayan tüm öğelerin kimliğini almak için bir joker karakter kullanmaya çalışıyorum. Denedim $('#jander*'), $('#jander%')ama çalışmıyor ..

Bunu çözmek için elementlerin sınıflarını kullanabileceğimi biliyorum, ama joker karakterler kullanmak da mümkün mü ??

<script type="text/javascript">

  var prueba = [];

  $('#jander').each(function () {
    prueba.push($(this).attr('id'));
  });

  alert(prueba);


});

</script>

<div id="jander1"></div>
<div id="jander2"></div>

2
Bu, jQuery (veya daha doğrusu Sizzle motoru) hakkında bir soru.
Peter Örneholm

1
Sadece bir not: jQuery veya Sizzle tarayıcı işlevlerini kullanabildiğinden sınıflarla yapmak çok daha hızlı olurdu (modern tarayıcılar için çok fazla fark yaratmamalıdır).
Felix Kling


7
Ayrıca, dikkat edilmesi gereken önemli bir nokta, $("[id*=jander]")jander dizesini içeren bir kimliğe sahip tüm öğeleri seçmesidir.
Gabriel Ryan Nahmias

Yanıtlar:


1279

"Jander" ile başlayan tüm öğeleri almak için:

$("[id^=jander]")

"Jander" ile bitenleri almak için

$("[id$=jander]")

Ayrıca JQuery belgelerine bakın


22
Belgeler bu örneği veriyor:$('input[name^="news"]').val('news here!')
Brenden

5
Kod istendiği gibi çalışır. İki kez alıntı yapmaya gerek yoktur, sadece bir kapanış teklifini kaçırma şansını arttırır ve daha az okunabilir hale getirir.
nico

4
@nico İlginçtir ki, dokümanlar özniteliklerle çalıştığını ve idteknik olarak bir özellik olduğunu söylüyor , ancak jquery'nin en son sürümleri (yani 1.9) ve özniteliklerde ve özelliklerde yapılan son değişikliklerin nasıl kaldırıldığını tahmin ediyorum, çizgi biraz bulanık ikisine göre ve böylece (en azından bazı) özellikler için özellik seçicileri kullanabilirsiniz.
johntrepreneur

Ne olursa, seçilenlerin Çiftini seçmek istiyorum. Örneğin: Şu anda .col-lg-4:even div:nth-child(1)aynı şeyi yapmak istersem .... ne yazardım? "[class^=.col-lg-]:even"? (Çalışmıyor gibi görünmüyorum)
Luis Robles

Beni şaşırtan biraz davranış ---- Eğer bunu "class $ = ..." ile kullanırsam, bir sınıfın adlarını değil, bir öğenin sınıf listesini arar. Bu nedenle, yalnızca aranan sınıf o öğedeki son sınıfsa vurur. Chrome dışında test yapmadım. Ve kusurun jQuery'de mi yoksa jQuery'deki beklentilerimde olduğundan emin değilim.
Roger Krueger

115

Başlık joker karakter önerdiğinden bunu da kullanabilirsiniz:

$(document).ready(function(){
  console.log($('[id*=ander]'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="jander1"></div>
<div id="jander2"></div>

Bu, belirtilen dizeyi id.


39

JQuery ile başlamayı deneyin

seçici, '^ =', ör.

[id^="jander"]

Yine de sormalıyım, bunu neden sınıfları kullanarak yapmak istemiyorsun?


2
Bağlam eklemek için, aynı çözümü arıyorum çünkü ModelForm sınıfı modellere dayalı kimlikleri belirleyen ve bu şekilde gruplandırmaya izin vermeyen Django kullanıyorum; HTML kontrolüm dışında.
Christian Mann

Bu, ASP.Net WebForms, özellikle Radyo ve Onay Kutusu Listeleri ile çalışırken kullanışlıdır.
DavidScherer

35

sınıflar için şunları kullanabilirsiniz:

div[class^="jander"]

Bunu çalıştıramadım, geçersiz sözdizimi hakkında bir mesaj alamadım.
stian

14

To id olsun joker maçından:

$('[id^=pick_]').click(
  function(event) {

    // Do something with the id # here: 
    alert('Picked: '+ event.target.id.slice(5));

  }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pick_1">moo1</div>
<div id="pick_2">moo2</div>
<div id="pick_3">moo3</div>


2
"Event.target.id" yerine bu da işe yarayabilir: $ (this) .attr ("id")
PJ Brunet

10

Daha karmaşık bir kimlik dizeniz olduğunda çift tırnak zorunludur.

Örneğin, şöyle bir kimliğiniz varsa: id="2.2"buna erişmenin doğru yolu:$('input[id="2.2"]')

Güvenlik nedenleriyle mümkün olduğunca çift tırnak kullanın.

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.