【问题标题】:append element with jquery script [closed]用jquery脚本附加元素[关闭]
【发布时间】:2021-12-16 22:56:27
【问题描述】:

基本上我的<td> 中有 PHP 和 jquery 代码,它们将允许内联编辑

<td>
    <div contenteditable="true" onBlur="updateValue(this, 'lName', '<?php echo $id;?>')" onClick="activate(this)"><?php echo $lName; ?></div>
</td>

我想在另一个基于 ajax 和 JSON 的表被追加时重新应用相同的效果。

success: function(data) {
    data.forEach(function(dt) {
        $("#tbody2").append(
            "<tr>"+ 
            " <td><div contenteditable="true" onBlur="updateValue(this, 'lName', +dt.personId+ ") onClick="activate(this)">" +dt.lName+ "</div></td>"   +
            "</tr>"); 
    });

dt.personIddt.lName 确实存在。

它一直在说

未捕获的语法错误,参数列表后缺少 )

我认为这将是函数参数的转义问题,但我不知道在哪里。

【问题讨论】:

  • 我猜是因为你一直使用" 这个" &lt;td&gt;&lt;div contenteditable="true" 应该是" &lt;td&gt;&lt;div contenteditable='true'

标签: php html jquery json


【解决方案1】:

问题是这个" &lt;td&gt;&lt;div contenteditable="true" onBlur="updateValue(this, 'lName', +dt.personId+ ")如果你看这行,jquery会认为你的行在" &lt;td&gt;&lt;div contenteditable="开始和结束,因为这是第一个和下一个"

因此,您必须将某些"' 交换或通过\n 转义它们

$("#tbody2").append(
"<tr>"+ 
    " <td><div contenteditable='true' onBlur='updateValue(this, \'lName\'," +dt.personId+ ")' onClick='activate(this)'>" +dt.lName+ "</div></td>"   +
"</tr>"); });

【讨论】:

  • 现在我得到一个 Uncaught Syntax error: unexpected end of input 模糊。它在非 JSON 行上工作正常
  • 此解决方案修复了 " 内的 " 但随后将 ' 放入 ' (onblur='...this, 'lName',...) 内 - 所以你会得到下一个错误。可能最容易使用反引号 ` 作为外引号,然后确保不要嵌套 "' - 或者,拆分字符串并根据需要使用另一个。例如:"example ' " + 'and "'
  • 或者,理想的和最简单的,不要使用内联事件处理程序,添加你需要的 data- 属性并使用 js/jquery 事件处理程序。
【解决方案2】:

你不匹配使用括号。

 data.forEach(function(dt){
    $("#tbody2").append(
       "<tr><td><div contenteditable='true' onBlur='updateValue(this, "+dt.lName+", +dt.personId )'  onClick='activate(this)"+dt.lName+"</div></td></tr>"
    );
  });

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 2020-12-04
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多