javascript - 处理 Jquery 模板中的特殊字符

标签 javascript jquery

row[1]Swap'nil 时,它会在控制台中抛出错误:

Uncaught Syntax Error: missing ) after argument list.

如何在 jQuery 中处理此类特殊字符,以便能够使用给定名称调用 testFunction()

<script type="text/x-jquery-tmpl" id="tmplTest">
  {{each(i, row) data}}
    <a href="javascript:void(0)" onclick='javaScript:testFunction('\${row[1]}');'>Click here</a>
  {{/each}}
</script>
function testFunction(name) {
  alert("test");
}

最佳答案

通过使用不显眼的 JS 附加事件(而不是过时的 on* 事件属性),您既可以避免问题,又可以改进逻辑。您还可以使用 data 属性来存储所需的值。

由于您已在页面中包含 jQuery,请尝试以下操作:

$(function() {
  $(document).on('click', '.link', function(e) {
    e.preventDefault();
    var name = $(this).data('name');
    console.log(name);
  });
});
<script type="text/x-jquery-tmpl" id="tmplTest">
  {{each(i, row) data}}
    <a href="#" data-name="${row[1]}" class="link">Click here</a> 
  {{/each}}
</script>

请注意,您可能仍需要对放置在 data 属性中的值进行 HTML 编码。您的模板库应该包含有关如何执行此操作的说明。

关于javascript - 处理 Jquery 模板中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48624274/

相关文章:

javascript - 我可以用什么来用 GTM 写入图像?

javascript - 包裹在 setTimeout 中时出现错误 "Cannot read property of undefined"

javascript - 无法设置 null 的属性 'nodeValue'

javascript - "match is null"仅在服务器 - jQuery 1.x

javascript - 如何以同步方式运行 2 个 Javascript block

javascript - 使用jquery更快还是不使用jquery?

javascript - 在 AngularJs 中无法加载 ng-view?

javascript - Google map 控件面板尺寸显示错误

php - Woocommerce 使用 Ajax 创建加载更多产品

javascript - 我想在 codeigniter 中使用 AJAX 重定向 Controller