Проблема decodeURI - гиперссылка становится простым текстом
Я работаю над приложением Sharepoint. Это одна из функций, позволяющая получить контактную информацию из списка сайтов sharepoint. Вот мой кусок кода:
var currentOpeningContent = '<h4 onclick="ShowJobDetail(\'' + encodeURI(currentOpeningTitle.text()) + encodeURI(currentOpeningRR.text()) '\');">'+Show details+'</h4>';
$("#open_jobs").append(currentOpeningContent);
function ShowJobDetail(title, roles)
{
$(".job_page_title").html(decodeURI(title));
$(".job_roles").html(decodeURI(roles));
}
Единственная проблема заключается в том, что когда идентификатор электронной почты передается в "ролях", он становится простым текстом из-за decodeURI. Но то, что я хочу, - когда пользователь нажимает на идентификатор электронной почты, должно открыться всплывающее окно.
1 ответ
Я не совсем понимаю вашу проблему, но я думаю, что код не работает.
Как вы уже используете JQuery, вместо того, чтобы делать эту уродливую вещь:
var currentOpeningContent = '<h4 onclick="ShowJobDetail(\''
+ encodeURI(currentOpeningTitle.text())
+ encodeURI(currentOpeningRR.text()) '\');">'
+ Show details
+ '</h4>';
$("#open_jobs").append(currentOpeningContent);
Пожалуйста, сделайте это так:
var $currentOpeningContent = $('<h4>Show details</h4>').click(encode);
function encode(e){
var title = '' + encodeURI(currentOpeningTitle.text()) + encodeURI(currentOpeningRR.text());
ShowJobDetail(title, roles); //"roles" is undefined! that's probably not wat you want
}
$("#open_jobs").append($currentOpeningContent);
Это "транскрипт" 1:1 вашего кода. Вы можете видеть, что "роли" не определены, когда вы нажимаете "h1". Кажется, вы просто забыли о коме между аргументами вашей функции.
ПРИМЕЧАНИЕ: никогда не помещайте JS в строку HTML явно. Это просто напрашивается на неприятности. Также - при использовании jQuery - старайтесь избегать простых строк html в пользу jQuery "HTML-генерирующих" методов.