2010-09-01 18 views
13

CMS'imde kullandığım TinyMCE için basit bir görüntü tarayıcısı yapmaya çalışıyorum. Bunun bir parçası olarak, kullanıcının mevcut bir resmi seçip seçmediğini tespit etmem gerekiyor, bu yüzden "bir resim formu seç" yerine "düzenle" formunu görüntüleyebilirim.jQuery'yi kullanarak bir değişken içindeki öğeler nasıl seçilir?

var selected_html = ed.selection.getContent(); 
var $elem = $(selected_html); 
console.log($elem); 

birinci işlevi HTML dizesi olarak editör penceresinden kullanıcı seçili metni döndürür. Daha sonra jQuery'yi kullanmak (her ne kadar düz javascript çok iyi olsa da) bu dizgenin daha sonra düzenleme için src ve title niteliklerini yakalamadan önce bir img etiketi içerip içermediğini kontrol etmek istiyorum.

Şimdi html'yi bir nesneye dönüştürebildiğim kadarı var. Ama bundan sonra img öğesi için arama yapamıyorum. Bu (How to manipulate HTML within a jQuery variable?) okuduktan sonra denedim:

$elem.find('img'); 

Ama bu sadece "tanımsız" nesne olarak çıkar ...

I (geç oluyor) Burada oldukça belirgin bir şey eksik düşünüyorum ama bir saat sonra hala img etiketini seçimden nasıl çıkaracağımı anlayamıyorum. .. :(önceden

çok teşekkürler

+1

Aldığınız "undefined" sonucu almak için ne yapıyorsunuz? Ve jQuery nesnesini oluşturmak için kullanılan HTML örneğini gönderir misiniz? – user113716

+0

Şu anda sadece konsol.log (Chrome'un hata ayıklayıcısı) yapıyorum. Ne yaparsam yapayım "undefined" ve "img" seçicisine ayarlanmış bir context parametresi olan bir nesne (__proto__?) Ile sonuçlanırım. Seçilmekte olan HTML düz ileriye doğru - sadece bir img, bazı kalın yazı ve bir img etiketi, vb. $ elem günlüğünü (kodun ilk bitinde olduğu gibi) kaydedersem, içindeki tüm HTML düğümlerini içeren bir nesne alırım. seçilen kod bit. Yani bu biraz iyi çalışıyor. Ama sonra jQuery sadece img elemanını seçmek için bulamadı (console.log ($ elem.find ('img'));). Her zaman bu "tanımsız" nesnesini verir. – Fourjays

+0

'.find()' yöntemi sizin için '' ifadesini alamaz. Cevabımı aşağıya bakın. – user113716

cevap

25

<img> jQuery nesnesinin kökünde olduğundan, .find() yerine .filter() kullanmanız gerekir. .find() üst düzey elemanlarının herhangi iç içe elemanları aramasını

$elem.filter('img'); 

.filter() yöntem olup, jQuery nesnenin üst düzeyde eleman (lar) bakar.

Hedef öğenin nerede olacağından emin değilseniz, arama yapmak için HTML'yi sarıcıya yerleştirebilirsiniz. Bu şekilde verilen HTML asla üstte olmayacaktır.

var selected_html = ed.selection.getContent(); 
var $elem = $('<div>').html(selected_html); 

var $img = $elem.find('img'); 
+0

Mükemmel, teşekkürler! Sonunda oldukça basit bir şey olacağını biliyordum. : P – Fourjays

0

deneyin sizin $elem değişkeni içinde gerçekten ne olduğunu görmek için sadece console.log($elem) hem Firefox ve Firebug kullanarak ve oldukça yolunda yönetmek gerekir yapmak;!)

İlgili konular