2017-07-20 1 views
-1

J'essaie de transmettre une variable dans une fonction JavaScript. Le problème que je n'arrive pas à comprendre comment échapper la chaîne pour envoyer cette variable dans un double guillemet. Il y a des tonnes de réponses à ce sujet mais je ne pouvais pas les utiliser correctement.Échapper une chaîne dans jQuery en passant une variable en paramètre

for (var k = 0; k < districts[division].length; k++) { 
    $('#district_list').append('<li class="byebooklist"><a href="javascript:getUniversity(' + districts[division][k] + ');">' + districts[division][k] + '</a></li>'); 
} 

Comment passer le paramètre à la fonction getUniversity() dans un guillemet?

Répondre

1

Juste essayer avec des citations échappées:

$('#district_list').append(
    '<li class="byebooklist"><a href="javascript:getUniversity(\''+districts[division][k]+'\');">'+districts[division][k]+'</a></li>' 
); 
//               ^^       ^^ 
+0

Merci cela a fonctionné :) –

1

Pour résoudre ce problème, vous devez envelopper la valeur dans l'argument de la fonction entre guillemets, mais vous aurez besoin de les échapper, en utilisant \':

for (var k = 0; k < districts[division].length; k++) { 
    $('#district_list').append('<li class="byebooklist"><a href="javascript:getUniversity(\'' + districts[division][k] + '\');">' + districts[division][k] + '</a></li>'); 
} 

Cependant, vous pouvez à la fois éviter le problème et améliorer la logique en ne mettant aucun JS dans le href et en utilisant à la place un gestionnaire d'événement discret. Comme vous avez étiqueté la question avec jQuery, voici comment vous pouvez le faire:

var html = districts[division].map(function(div) { 
    return '<li class="byebooklist"><a href="#" data-division="' + div + '">' + div + '</a></li>'; 
}).join(''); 
$('#district_list').append(html); 

$(document).on('click', '.byebooklist a', function(e) { 
    e.preventDefault(); 
    getUniversity($(this).data('division')); 
});