Doğru elemanları aldıklarını kontrol etmek için CSS1-3 seçicilerini nasıl test edebilirim, örn. JavaScript ile (belki jQuery)?CSS seçicilerini JavaScript’te nasıl test edebilirim?
cevap
Şimdiye kadarki en basit geleneksel yol, JavaScript'i hiç kullanmamaktır ve seçiciyi kalbin içeriğine göre test edebileceğiniz bir test sayfası hazırlar. Web'de gördüğünüz test durumları (iyi bilinen CSS3.info Selectors Test gibi), çevrimiçi olarak barındırılan gerçekten sadece taranan sürümlerdir.
Ancak bir JavaScript yöntemi arıyorsanız, Selectors API'u deneyebilirsiniz. Modern DOM uygulamalarında (IE8 + ve diğerleri) mevcuttur ve CSS seçicilerini kullanan öğe düğümleri için DOM'yi sorgulamak ve belirli bir tarayıcı tarafından doğal olarak desteklenen CSS seçicilerini test etmek için bir JavaScript ön ucu sağlar.
(Seçici API'sini uygulamamış tarayıcılarda jQuery'ye güvenmeniz gerekir, ancak tarayıcının kendi desteklemenin yanı sıra bir tarayıcıdan daha farklı bir dizi seçici için destek sağladığını unutmayın. bir seçici test etmek Chrome'un JavaScript konsolu ile jQuery kullanarak Selectors spec. bir örnekte bulunmayan standart uzantıları). test etmek istediğinize bağlı
Çağrısı querySelector()
veya querySelectorAll()
here bulundu ve kontrol edilebilir dönüş değeri (tercihen yalnızca test ettiğinizden beri tarayıcınızın geliştirici araçlarında):
Eşleşme bulunursa, eski yöntem,
NodeList
olarak eşleşen tüm öğeleri döndürürken, eşleşen ilkElement
değerini döndürür.Hiçbir şey bulunamazsa, eski
null
değerini döndürür, ikincisi boş birNodeList
döndürür.Seçici geçersiz ise, yakalayabileceğiniz bir istisna atılır.
var h1 = document.body.querySelector('h1'); console.log(h1);
: İlk<h1 itemprop="name">
h1
body
yılında bulma: Burada
Sorunun soyundan gelenlerikişiyi buldukeleman:
var subnodes = h1.querySelectorAll('*'); console.log(subnodes[0]);
<a class="question-hyperlink" href="https://stackoverflow.com/questions/9165859/how-do-i-test-css-selectors-in-javascript">
Test (Safari/Chrome'da
:-webkit-any()
):-moz-any()
Firefox'ta sözde sınıfı:// This selector works identically to h1 > a, li > a var hyperlinks = document.querySelectorAll(':-moz-any(h1, li) > a'); console.log(hyperlinks);
[a#nav-questions /questions, a#nav-tags /tags, a#nav-users /users, a#nav-badges /badges, a#nav-unanswered /unanswered, a#nav-askquestion /questions/ask, a.question-hyperlink /questio...vascript]
Test varolmayan bir seçici (yani perhaps many of us wish did exist):
// :first-of-class doesn't exist! var selector = 'div.answer:first-of-class'; try { var firstAnswer = document.querySelector(selector); console.log(firstAnswer); } catch (e) { console.log('Invalid selector: ' + selector); }
Invalid selector: div.answer:first-of-class
http://selectorgadget.com test etmek ve CSS seçicileri inşa etmek oldukça güzel. Sadece sağladıkları bir parçayı sürükleyip bırakarak yer imleri çubuğunuza bırakın ve ihtiyacınız olduğunda tıklatın.
[this] (http://lea.verou.me/2011/07/detecting-css-selectors-support-my-jsconf-eu-talk/) blog yazısını okumanızı önerebilirim. sorun ve birkaç çözüm verir. –