2010-02-27 32 views
15

मुझे jquery के साथ टेक्स्ट ढूंढने और बदलने के बारे में दूसरों से कुछ अद्भुत मदद मिली। नीचेjQuery - शरीर लोड होने के बाद टेक्स्ट ढूंढें और बदलें

कोड शब्द मिलेगा: "विषय:" और साथ बदलें "नाम:"

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

और यह अद्भुत काम करता है।

एकमात्र चीज जो मैं मुद्दों में चल रहा हूं वह पेज लोड के बाद लोड होने वाली टेक्स्ट को प्रतिस्थापित कर रहा है।

मेरे पास कुछ जावास्क्रिप्ट फ़ंक्शन हैं जो सर्वर से डेटा प्रदर्शित कर रहे हैं, लेकिन पृष्ठ के बाद ही सभी तत्व लोड हो गए हैं। उदाहरण के लिए, उपयोगकर्ता ड्रॉपडाउन से एक मान का चयन करता है जो डेटाबेस से उत्पादों की सूची लोड करने के लिए कोई ईवेंट शुरू करता है।

मैं इस तरह उन उत्पादों में से कुछ को फ़ॉर्मेट:

दादी स्मिथ सेब कीमत: प्रति पाउंड पोषण तथ्यों x.xx ....

मैं केवल एक शब्द "की जगह खोजने के लिए चाहते हैं मूल्य: ", और संभवतः इसे" लागत: "से प्रतिस्थापित करें।

लेकिन जैसा कि मैंने उल्लेख किया है, कि डेटा अभी तक लोड नहीं हुआ है। और ड्रॉपडाउन मेनू से उपयोगकर्ता "ग्रैनी स्मिथ एप्पल" का चयन करने के बाद ही प्रदर्शित होता है।

क्या यह एक सीमा है जिसके साथ मुझे रहना है?

उत्तर

13

आप लोड पर और साथ ही ajaxStop event को एक घटना संलग्न की कोशिश कर सकते तरह $(document).ready() कॉलबैक से अपने समारोह कॉल करें:

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

यह काम करता है! अच्छा विचार, और अभी तक इतना आसान है। धन्यवाद! – coffeemonitor

+2

इतने सारे जेक ऑब्जेक्ट्स क्यों बनाते हैं .... कैश $ (यह) इसके बजाय refs – redsquare

+0

मैं यह स्निपेट कहां जोड़ूं? functions.php, मेरी थीम फ़ाइल? नोबई प्रश्न के लिए खेद है। – Pete

1

इस

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

मैं पहले से ही ऐसा कर रहा हूं, और पृष्ठ लोड होने के बाद लोड किए गए डेटा को प्रभावित नहीं कर रहा है। – coffeemonitor

0

समारोह नीचे मेरे लिए पूरी तरह से काम करता है:

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)); 
    }); 
} 

यहां एक उपयोग उदाहरण है:

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

$(document).ready(replaceAllText); 
$('html').ajaxStop(replaceAllText); 
संबंधित मुद्दे