【问题标题】:Escape string in jQuery while passing a variable as a parameter将变量作为参数传递时在jQuery中转义字符串
【发布时间】:2017-07-20 09:28:38
【问题描述】:

我正在尝试在 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()函数?

【问题讨论】:

    标签: javascript jquery string escaping


    【解决方案1】:

    尝试使用转义引号:

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

    【讨论】:

      【解决方案2】:

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

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

      然而,您可以避免问题并改进逻辑,方法是根本不将任何 JS 放在 href 中,而是使用不显眼的事件处理程序。当您使用 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'));
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-27
        • 2020-08-19
        • 2013-06-24
        • 1970-01-01
        相关资源
        最近更新 更多