2013-04-24 3 views
1

я использую следующий код для замены всех экземпляров символа с другим:JQuery: Замена массива с другим

$("#myContent").each(function() { 
    $(this).html($(this).html().replace("1", "一")); 
}) 

$("#myContent").each(function() { 
    $(this).html($(this).html().replace("2", "二")); 
}) 

$("#myContent").each(function() { 
    $(this).html($(this).html().replace("3", "三")); 
}) 

... 

Как я могу поставить все это вместе, что-то вроде замены массив с другим?

+1

Почему вы используете 'каждый 'для одного выбранного элемента лор? – undefined

+0

Прежде всего, похоже, что у вас есть несколько элементов с одинаковыми ID – bipen

ответ

2

Что-то вроде этого, непроверенных:

var replacers = { 
    '一': /1/gi, 
    '二': /2/gi, 
    '三': /3/gi 
}; 

var el = $("#myContent"), 
    html = el.html(); 

for (var key in replacers) { 
    html = html.replace(replacers[key], key); 
} 
el.html(html); 
+0

Спасибо, но это не изменяет каждый экземпляр персонажа. Например, в «2011 году» изменится только первый «1». – Iryn

+0

Обновлено сообщение. Обратите внимание: если вы делаете это много, вы, вероятно, должны кэшировать регулярные выражения. –

+0

Мой массив состоит только из чисел, поэтому в основном у него десять членов. Требуется кэширование? В любом случае, пожалуйста, скажите, как я должен их кэшировать. – Iryn

0

Попробуйте этот путь, вместо того, чтобы:

var html = $(this).html(); 

html = html.replace(/1/g, "一"); 
html = html.replace(/2/g, "二"); 
html = html.replace(/3/g, "三"); 

$(this).html(html); 
+0

Спасибо. Хорошо работает. – Iryn

0

Попробуйте

var replacers = { 
    '1': '一', 
    '2': '二', 
    '3': '三' 
}; 

$("#myContent").html(function(index, html){ 
    $.each(replacers, function(i, v){ 
     html = html.replace(new RegExp(i, 'g'), v, 'g') 
    }) 
    return html; 
}); 

Демо: Fiddle

+0

Это не изменит каждый экземпляр персонажа. Например, в «2011 году» изменится только первый «1». – Iryn

+0

@ Ирины см. Udate –

Смежные вопросы