2012-01-12 5 views
0

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

$.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». Когда я стираю аргумент, он работает. Пожалуйста помоги!

ответ

1

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

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

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

+0

Thanx craigmj. он работает слишком хорошо. – user790514

3

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

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

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

Вот еще информация о том, почему это плохая практика, чтобы использовать javascript: протокол: Why is it bad practice to use links with the javascript: "protocol"?

+0

благодарит Филиппа Уолтона. Думаю, я собирался в 1990-е годы :( – user790514

Смежные вопросы