添加嵌套引号

Adding nested quotes

本文关键字:嵌套 添加      更新时间:2023-09-26

我正在玩jquery的追加函数。我正在附加相当多的html,它基本上是一个包含onclick事件函数的html按钮。

听起来令人困惑?我知道。我有一些技术限制,这使我将其作为一两天的唯一选择。

无论如何,这里有一些例子:

这不起作用:

$('body').append('<button onclick="(function(){console.log(' + '"Hello World"' + ');}())">BTN1</button>');

这有效并发布一个 INT:

$('body').append('<button onclick="(function(){console.log(' + "3" + ');}())">BTN2</button>');

问题在于onclick引号中字符串的声明。我认为它应该有效,但由于它没有,我做错了什么。问题是什么。

不能

onclick 的属性值中使用双引号,因为双引号用于属性的分隔 (onclick="..." )。而是使用反斜杠来转义单引号,如下所示:

$('body').append('<button onclick="(function(){console.log(''Hello World'');}())">BTN1</button>');

或者,如果要连接字符串:

$('body').append('<button onclick="(function(){console.log(' + '''Hello World''' + ');}())">BTN1</button>');

多种语言嵌套多层深是编写和维护的噩梦。尽量完全避免它。为按钮创建一个 DOM 对象,然后将 JS 事件处理程序单独绑定到该对象。

$('body').append(
    $("<button>BTN1</button>").on(
        'click', 
        function () {
            console.log("Hello World");
        }
    )
);

您可以对属性使用单引号,以便可以保留双引号。只需确保在带有反斜杠的 JS 部分中转义内联单引号

$('body').append('<button onclick=''(function(){console.log(' + '"Hello World"' + ');}())''>BTN1</button>');