jquery 在onclick函数中传递字符串

ttvkxqim  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(175)

我有一个变量VISIT_ID,它包含的值包括空间作为Visit 1。我在下面的onclick函数中传递了这个变量。这个return语句在javascript datatable column中使用。

var Cols = [
    {
        "mData": "VISIT_ID", "sDefaultContent": "", "mRender": function (data, type, index, row) {
            return data;
        }
    },
    {
    "mData": "ALERT_ACTION", "sDefaultContent": "", "mRender": function (data, type, index, row) {
        return "<label>Not Reviewed</label><i onclick = OpenAlert('" + index.VISIT_ID + "') data-toggle='tooltip' data-placement='top'></i>";
     }
];

但是当点击它的时候。我得到这个错误:
未捕获的语法错误:无效或意外的令牌
当我用这种方法来安慰你的时候。我得到的结果如下:

OpenAlertActionOverlay('Visit 1')

但是如果我们控制event.target,它的结果是:

$(document).on('click', function (event) {
    console.log('event.target', event.target);
}
lsmepo6l

lsmepo6l1#

尝试在HTML中使用JavaScript将字符串混搭在一起以形成具有JavaScript的东西是困难脆弱的。尽可能避免这样做。
标准DOM和jQuery都有生成DOM对象的工具:用他们!
您的代码将更加冗长,但可读性更强。

...function (data, type, index, row) {

  function openAlert() {
    openAlert($(this).data('visit-id'));
  }

  const label = jQuery("<label />").text("Not reviewed");
  const italic = jQuery("<i />")
    .on("click", openAlert)
    .data("toggle", "tooltop")
    .data("placement", "top")
    .data("visit-id", index.VISIT_ID);

  const wrapper = jQuery(<div />);
  wrapper.append(label, italic);

  return wrapper;
}

旁白:

  • <label> s用于标记<input> s和其他表单控件。你没有for属性,里面也没有表单控件。你用错元素了。
  • <i>元素用于标记通常在打印中呈现为斜体的文本(例如,船舶名称)。你没有短信。我猜你打算在那里放一个背景图像,但这对各种各样的人(包括键盘用户和屏幕阅读器用户)都没有帮助。它看起来应该是一个<button>,包含一个<img>和一个alt属性。
ltqd579y

ltqd579y2#

这一定是由于'"的使用不明。为了避免跟踪所有这些报价,您可以使用Template_literals

return `<label>Not Reviewed</label>
        <i onclick = OpenAlert("${index.VISIT_ID}") 
           data-toggle='tooltip' data-placement='top'>
        </i>`;

相关问题