Yanıtlar:
Virgül kullanın.
'.classA, .classB'
Alanı atlamayı seçebilirsiniz.
AND
olurdu .classA.classB
.
Birleştirilmesi gereken birden fazla jQuery nesneniz varsa, virgül kullanmak yeterli olmayabilir.
.Add () metodu sonuç kümesi için seçilen elemanları ekler:
// classA OR classB
jQuery('.classA').add('.classB');
Daha ayrıntılı '.classA, .classB'
, ancak aşağıdaki gibi daha karmaşık seçiciler oluşturmanıza izin verir:
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
Tam olarak bu işlevsellik için inanılmaz derecede basit (5 satır kod) eklentisi yazdım:
http://byrichardpowell.github.com/jquery-or/
"Bu öğeyi al veya bu öğe yoksa bu öğeyi kullan" ifadesini etkili bir şekilde söylemenizi sağlar. Örneğin:
$( '#doesntExist' ).or( '#exists' );
Kabul edilen cevap buna benzer işlevsellik sağlarken, her iki seçici (virgülden önce ve sonra) varsa, her iki seçici de döndürülür.
Umarım bu sayfaya google üzerinden gelebilecek herkes için yararlı olur.
"a" || "b"
vs. null || "b"
vanilya JS. Burada aynı davranışı uygularsak, varsa $(a).or(b)
geri dönmeli $(a)
, aksi takdirde geri dönmelidir $(b)
. "Veya" JS'nin davranışıyla eşleştiği için "bu isimlendirme ile ilgili yanlış bir şey olduğunu sanmıyorum || (veya) operatör.
or
. Başkalarının konuştuğu şey daha çok bir eylem concat
veya merge
eylem gibidir.
Standart element = element1 || JavaScript'in doğru olan ilkini döndüreceği element2, tam olarak bunu yapabilirsiniz:
element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');
gerçekte bulunan ilk öğeyi döndürür. Ancak daha iyi bir yol, jQuery seçici virgül yapısını (bulunan öğelerin bir dizisini döndürür) bu şekilde kullanmak olabilir:
element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];
bulunan ilk öğeyi döndürür.
Ben zaman zaman bir listede etkin bir öğe veya etkin bir öğe yoksa bazı varsayılan öğe bulmak için kullanın. Örneğin:
element = $('ul#someList').find('li.active, li:first')[0]
aktif sınıfı olan herhangi bir li'yi geri döndürür veya hiç olmazsa, sadece son li'yi döndürür.
İkisi de işe yarayacak. Yine de, potansiyel performans cezaları vardır || dizi yaklaşımı doğru bulmuş olsa bile işlemeyi durduracakken dizi yaklaşımı tüm öğeleri bulmaya çalışacaktır. Sonra tekrar || Yapı, geri dönecek olanı bulmadan önce birkaç seçiciden geçmesi gerekiyorsa potansiyel olarak performans sorunları yaşayabilir, çünkü her biri için ana jQuery nesnesini çağırması gerekir (bunun bir performans isabeti olup olmadığını gerçekten bilmiyorum, olması mantıklı görünüyor). Seçici oldukça uzun bir dize olduğunda, genel olarak, dizi yaklaşımını kullanın.