Aşağıdaki gereksinime sahip olduğumu varsayalım: e
öğesinin elemanına "x"
kimliğine sahip eleman eklenmesi halinde, aksi takdirde e
gövdeye ekleyin.Başka bir tane yoksa JQuery'de bir öğeyi seçmenin zarif bir yolu var mı?
, yazabilirim: jQuery yılında
var parent = document.getElementById("x") || document.body;
parent.appendChild(e);
, şunları yapar değil eser:
var parent = $("#x") || $("body");
parent.append(e);
çünkü eğer id x
var olan hiçbir unsur, disjunct ilk boş jquery nesnesini döndürür, doğrulukla değil, falsy ile append
hiçbir şey yapmaz. Ben Ancak yazabilirsiniz:
var parent = $("#x")[0] || $("body")[0];
parent.appendChild(e);
ama jQuery nesnesi indeksleme HTMLElements beni geri alır çünkü bu çözüm biraz aksak, yani appendChild
yerine append
kullanmalıdır. Bu çalışırken, bu seviyelerin karıştırılmasının uygun olup olmadığını veya kötü tasarımın göstergesi olup olmadığını merak ediyorum.
first()
'u kullanmanın bir yolu olabilir mi? Belki de ilk elemanı id x ile div ve ikincisi de gövdesi olan bir dizi olan bir jQuery nesnesi oluşturabilirim. Bunu bir eleman dizisi alan jQuery yapıcı form ile yapabilirim, ama sonra seviyelere bir karıştırma için geri döndüm. Ayrıca x ($("#x").length
) kimliğine sahip bir elemanın varlığını nasıl kontrol edeceğimi de biliyorum, ancak bunun, "eğer var ise, kimlik x ile elemanın" ifadesini ifade etmenin zarif bir yoluna nasıl yol açacağını göremiyorum.
Böyle bir formülasyon var mı?
var parent = $('#x');
if(parent.length == 0) parent = $('body');
Ve niyet da oldukça net:
Ooh, bu çok güzel - jQuery burada gerçekten çok ciddi bir sihir çalışmadığı sürece - kısa devre yerine ilkini döndürmeden önce * tüm * öğeleri seçmenin dezavantajına sahiptir. Yine de, bu performans seviyesini önemsersek, ilk etapta jQuery kullanmamalıyız. – Matchu
Hayır, bu işe yaramaz çünkü ["döndürülen jQuery nesnesindeki DOM öğelerinin sırası belge sırasına göre aynı olmayabilir."] (Http://api.jquery.com/multiple- selector /), örneğin: http://jsfiddle.net/ambiguous/edYY6/. Bu size her seferinde
will verecektir. –Bunun çok güzel olduğunu kabul etti. Her birinden biriyle iyiyiz (ya da olması gerekir), çünkü ilkinin sayfada benzersiz olması gereken bir kimlik vardır, ikincisi ise ** vücut elemanıdır. HTML'de bunlardan sadece biri olmalı. –