2010-02-27 19 views
15

JQuery ile metin bulup değiştirmeyle ilgili olarak başkalarından harika yardım aldım. "Konu:"jQuery - Vücut yüklendikten sonra, metni bul ve değiştir

kod altındaki kelimeye bulacak ve ile değiştirin "Ad:"

$("*").each(function() { 
    if ($(this).children().length == 0) { 
     $(this).text($(this).text().replace('Subject:','Name:')); 
    } 
}); 

Ve bu olağanüstü çalışır.

Sorun yaşadığım tek şey, sayfa yüklendikten sonra yüklenen metnin değiştirilmesidir.

Sunucudan veri görüntüleyen bazı javascript işlevlerim var, ancak yalnızca sayfa tüm öğeleri yükledikten sonra. Örneğin, bir kullanıcı veritabanından bir ürün listesi yüklemek için bir olayı başlatan açılır listeden bir değer seçer.

Granny Smith Elma Fiyatı: Böyle bu ürünlerin bazıları biçimlendirmek

kiloluk Beslenme gerçekler başına x.xx ....

Ben sadece bir kelime "yerine bulmak isteyeceksiniz Fiyatı: "ve muhtemelen" Maliyet: "ile değiştirin.

Ancak bahsettiğim gibi, bu veriler henüz yüklenmedi. Ve sadece kullanıcı açılır menüden "Granny Smith Elmaları" nı seçtikten sonra görüntülenir.

Bu benim yaşamam gereken bir sınır mı?

cevap

13

gibi $(document).ready() callback'inde adresinin işlevini çağırın:

function replaceText() { 
    var jthis = $(this); 
    $("*").each(function() { 
     if(jthis.children().length==0) { 
      jthis.text(jthis.text().replace('Subject:', 'Name:')); 
     } 
    }); 
} 
$(document).ready(replaceText); 
$("html").ajaxStop(replaceText); 
+0

Bu işe yarıyor! İyi fikir, ama yine de çok basit. Teşekkür ederiz! – coffeemonitor

+2

Neden bu kadar çok jq nesnesi oluşturuyorsunuz ... önbellek $ (this) bunun yerine geri dönüyor – redsquare

+0

Bu pasajı nereye ekleyebilirim? functions.php, tema dosyam? Noobie sorusu için üzgünüm. – Pete

1

Sen yük yanı sıra ajaxStop event için bir etkinlik ekleyerek deneyebilirsiniz bu

$(document).ready(function() { replace_stuff(); }); 
+0

Zaten bunu yapıyorum ve hala sayfa yüklendikten sonra yüklenen verileri etkilemiyorum. – coffeemonitor

0

işlevi aşağıda benim için mükemmel çalışıyor:

function replaceText(selector, text, newText, flags) { 
    var matcher = new RegExp(text, flags); 
    $(selector).each(function() { 
    var $this = $(this); 
    if (!$this.children().length) 
     $this.text($this.text().replace(matcher, newText)); 
    }); 
} 

İşte bir kullanım örneği:

function replaceAllText() { 
    replaceText('*', 'Subject:', 'Name:', 'igm'); 
} 

$(document).ready(replaceAllText); 
$('html').ajaxStop(replaceAllText); 
İlgili konular