2017-07-20 3 views
-1

Ich versuche, eine Variable innerhalb einer JavaScript-Funktion übergeben. Das Problem, das ich nicht herausfinden kann, wie man Schnur streicht, um diese Variable innerhalb eines doppelten Zitats zu senden. Es gibt Tonnen von Antworten darauf, aber ich konnte sie nicht richtig verwenden.Escape-Zeichenfolge in jQuery beim Übergeben einer Variablen als Parameter

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>'); 
} 

Wie die Parameter an die getUniversity() Funktion in einem doppelten Anführungszeichen zu übergeben?

Antwort

1

Versuche mal mit entkam Zitate:

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

Danke, dass es funktioniert :) –

1

Um dies zu beheben müssen Sie den Wert in der Funktion Argument in Anführungszeichen wickeln, aber Sie werden sie fliehen müssen, mit \':

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>'); 
} 

Allerdings, können Sie sowohl das Problem vermeiden und die Logik verbessern, indem Sie überhaupt kein JS in href setzen und stattdessen einen unauffälligen Event-Handler verwenden. Wie Sie die Frage mit jQuery markiert haben, können Sie Folgendes tun:

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')); 
}); 
Verwandte Themen