Вызов функции Javascript с аргументами - PullRequest
0 голосов
/ 12 января 2012

Я занимаюсь разработкой мобильного приложения, используя phonegap и jquery mobile.У меня есть эта функция, которая должна передать переменную в другую функцию.Это выглядит примерно так:

    $.each(response.records, function(i, contact) {
       var url = contact.Id;
       var newLi = $("<li><a href='javascript:dothis("+url+")'>" + (i+1) + " - " + contact.Name + " - Company "+contact.Company+"</a></li>");
           ul.append(newLi);}

У меня есть функция dothis (аргумент), но она не вызывается при вводе переменной url.Когда я стираю аргумент, это работает.Пожалуйста, помогите!

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Определенно не рекомендуется использовать протокол javascript: в атрибутах href.Гораздо лучше привязывать события к ссылкам и отвечать соответствующим образом.

Вставьте что-то вроде этого после добавления newLi к ul:

$.find('a').bind('click', function() {
    dothis(url);
});

Вот еще немного информации о том, почему это плохоПрактика использования протокола javascript:: Почему плохая практика использования ссылок с javascript: «протокол»?

1 голос
/ 12 января 2012

Вы должны поместить URL в кавычки в javascript:

var newLi = $("<li><a href=\"javascript:dothis('" +
      url +
      "')\">" + 
      (i+1) + " - " + contact.Name + 
      " - Company " + contact.Company + "</a></li>");

Вы может необходимо рассмотреть возможность экранирования URL, чтобы, если он содержит какие-либо сложные символы, ваш javascriptне сломается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...