То, что я хотел бы предложить, это то, что поначалу стоило бы вам немного больше времени, но я считаю, что долгосрочная выгода принесет вам пользу.
У меня есть проект, который также настроен на многоязычность, поэтому одним из первых действий, которые я делаю на странице, является загрузка текста, который мне понадобится для этой страницы.
Я сохраняю свой текст в простом XML-файле (сейчас у меня действительно не так много текста, но вы, очевидно, можете сделать это в базе данных, TXT-файле, что хотите), а затем просто загружаю его $.ajax
(с async
, установленным на false
, чтобы вы знали, что весь текст загружен, прежде чем пытаться его вызвать) сразу. Я настроил это как мой language
объект, который принимает код языка в качестве параметра. Поэтому, позвонив language = new language('en-us');
в начале своей страницы, я могу легко получить любой текст, не зависящий от языка, когда мне это понадобится. Например, если вы применили это к своему проекту, это было бы так просто:
$("input[type='submit'][name='delete']").click(function() {
return confirm(language.text('are_you_sure'));
});
Редактировать : Я также хотел бы сказать, что это хорошо работает и с PHP, поскольку вы можете читать один и тот же XML-файл из PHP и jQuery, тем самым сохраняя весь ваш текст в одном централизованном месте.
Если вам не нравится этот подход, я бы указал на два других подхода HTML, похожих на те, которые вы пробовали. Первый - просто использовать поле input[type=hidden]
. Таким образом, у вас не будет эффекта наведения мыши, который вам не нравится. Тогда вы можете просто сделать что-то вроде этого:
<input type="hidden" name="confirm_text" value="Are you sure?" />
$("input[type='submit'][name='delete']").click(function() {
return confirm($('input[name=confirm_text]').val());
});
Однако я думаю, что это довольно грубо, если честно, и не очень семантически. Другой вариант - использовать атрибут data-
, но он открыт только для вас, если вы используете HTML5 (что вы можете легко сделать - просто измените ваш тип документа). Это будет работать так:
<input type="submit" name="delete" value="Delete me" data-confirmtext="Are you sure?" />
$("input[type='submit'][name='delete']").click(function() {
return confirm($(this).attr('data-confirmtext'));
});
Из всех этих вариантов я определенно считаю, что первый - лучший, поскольку вас интересуют лучшие практики и семантика. Попытка хранить случайные данные в нерелевантных атрибутах HTML или скрытых полях просто не кажется мне очень семантической. Надеюсь, это поможет!