Переопределение методов jQuery
Прошу помощи в реализации следующего:
Есть большой не локализованный скрипт, который переловачивать не вижу смысла, в том числе ввиду будущих обновлений. В коде существует много конструкций jQuery, типа: $('selector').text('Website'); Есть желание переопределить метод text из jQuery, примерно по следующей логике: function lang(txt){ if(txt=='Website')txt='Вебсайт'; return txt; } Т.е. когда в коде встречается что-то вроде $('.txt1').text('Website'); то вместо <div class="txt1">Website</div>, вставлялось переведённое <div class="txt1">Вебсайт</div> Подскажите пожалуйста есть ли возможность такое реализовать и если да, то как, пример было бы здорово. |
Скрипт, это текст, а в тексте найти и заменить можно в любом редакторе, только менять нужно не грабли "Website" на грабли "Вебсайт", а на имя переменной, которая может содержать как "Website", так и "Вебсайт", так и любое иное.
|
Это вроде проще, но было бы гораздо элегантнее иметь описанное
переопределение, так как при обновлении скрипта, все правки полетят. Заданный вопрос остаётся открытым. |
Vanguger, так?
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- скрипт, который вставляется сразу после jQuery --> <script> /* словарик */ var i18n = { "Website": "Уебсайт" }; /* «манкипатчинг» позволяет добавить немного волшебства в jQuery */ jQuery.prototype.text = (function (jQueryText) { return function text(string) { return jQueryText.call(this, string in i18n ? i18n[string] : string); } })(jQuery.prototype.text); </script> <!-- Пример --> <script> $(() => { $(".txt1").text("Website"); }); </script> <div class="txt1"></div> |
Цитата:
Даже с учетом того, что в JQ и не потребуется ничего переопределять, и есть готовое $.valHooks, для такого занятия даже слов не найти, чтобы охарактеризовать. ) |
Цитата:
Цитата:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- скрипт, который вставляется сразу после jQuery --> <script> /* словарик */ var i18n = { "Website": "Уебсайт" }; /* здесь ожидается решение от laimas */ </script> <!-- Пример --> <script> $(() => { $(".txt1").text("Website"); }); </script> <div class="txt1"></div> |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 23:42. |