jQuery 中的转义字符串,同时将变量作为参数传递



我正在尝试在JavaScript函数中传递一个变量。问题我无法弄清楚如何转义字符串以在双引号内发送该变量。关于这个问题有很多答案,但我无法正确使用它们。

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

如何将参数传递给双引号内的getUniversity()函数?

只需尝试使用转义引号:

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

要解决此问题,您需要将函数参数中的值括在引号中,但您需要使用'转义它们:

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

但是,您可以通过根本不在href中放置任何 JS 而是使用不显眼的事件处理程序来避免此问题并改进逻辑。当你用jQuery标记问题时,你可以这样做:

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

最新更新