开发者

jquery find and replace text, without element id

开发者 https://www.devze.com 2022-12-21 06:18 出处:网络
I\'m playing around with finding and replacing text. The only problem I\'m having is finding a text string, that is not attached to an element with an ID.Otherwise, it would be easy.

I'm playing around with finding and replacing text.

The only problem I'm having is finding a text string, that is not attached to an element with an ID. Otherwise, it would be easy.

I'm trying something like this:

$("*").each(function () {
    $(this).html(this.html().replace('Original Text','New Text'));
});

Not working too well.

Anyone run into this before?

Also, if I have several words or phrases开发者_如何转开发 to find and replace, how does that affect the speed/processing power of the user's browser? Is it a memory hog?


$("*").contents().each(function() {
    if(this.nodeType == 3)
        this.nodeValue = this.nodeValue.replace("old", "new");
});


Takpar, your code works too. It seems to stop a few other things from working, but only items I'm pulling dynamically. For example, when I'm using .ajax(). Not sure why, but that's why I ran into. I'll test more.

On a related topic, Gumbo's code works:

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

The only thing I'm running into issues with is replacing text that is loaded after the page loads.

I do have some javascript functions that are displaying data from the server, but only after the page has loaded all elements. For example, a user selects a value from a dropdown that initiates an event to load a list of products from the database.

I format some of those products like this:

Granny Smith Apples
Price: x.xx per pound
Nutritional facts....

I will only want to find a replace the word "Price:", and possibly replace it with "Cost:".

But as I mentioned, that data has not been loaded yet.

Is a limit I have to live with?


why don't you simply use:

$('body').html($('body').html().replace('Original Text','New Text'));


You want the :contains() selector. http://api.jquery.com/contains-selector/

$("*:contains('Original Text')").each(...);


$("*").each(function () { 
if ($(this).children().length == 0){ 
     $(this).html($(this).html().replace(/Old String/g, "New String"));
}});
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号