Проблема 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-генерирующих" методов.

Другие вопросы по тегам