使 JQuery .html() 将属性值括在单引号中. 默认情况下,



JQuery 将属性值括在双引号中,即使原始 html 字符串具有单引号,它也会被覆盖,如以下示例所示:

$("<div><span class= 'foo' id='foo2' >abc</span></div>").html();

输出:

<span class="foo" id="foo2">abc</span>

我在 JQuery 文档中查找了一下,也搜索了但找不到与此相关的任何内容,虽然我可以编写这样的正则表达式替换,但我不想用正则表达式操作 HTML,原因很明显,我想知道是否有一种深刻的方法来实现这一点

编辑:

它困扰我的原因是在应用程序的某些地方存在像htmlstring.indexOf("attr='value'")这样的代码,当我通过将其转换为 JQuery 对象并返回字符串在htmlstring中进行一些操作时,这些代码最终会中断。

编辑 2:

对于我在上层编辑中提到的特定问题,我不需要解决方案,我已经处理过了,让我问这个问题的是,是否有可能或更改 HTML 中的引号包装属性的更好方法是什么。

我们可以选择对 HTML 中的属性使用单引号或双引号,但是...
。呈现页面时,它们都变成双引号。

我建议您使用.attr()方法而不是使用.indexOf().

请参阅下面的代码片段:

var htmlstring1 = document.getElementById('myDiv1').outerHTML;
var htmlstring2 = document.getElementById('myDiv2').outerHTML;
console.log("string:", htmlstring1);
console.log("string:", htmlstring2, 'nn');
// Note that attr='value' of myDiv2 becomes attr="value" in console
console.log(`Using .indexOf('attr="value"'): (will always work)`)
if (htmlstring1.indexOf('attr="value"') > -1)
console.log('Found.');
else console.log('Not found.');
console.log(`Using .indexOf("attr='value'"): (will never work)`)
if (htmlstring1.indexOf("attr='value'") > -1)
console.log('Found.');
else console.log('Not found.');
console.log(`Using .attr('attr') == 'value'): (a suggestion)`)
if ($('#myDiv1').attr('attr') == 'value')
console.log('Found.');
else console.log('Not found.');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv1" attr="value"></div>
<div id="myDiv2" attr='value'></div>

⋅ ⋅ ⋅

在您发表评论后,我尝试了一些事情...

正如您在问题中谈到的,这里有一个技巧:
当 jQuery 使用元素字符串时,它会用双引号规范化:

var htmlstring = "<span class='foo' id='foo2'>abc</span>";
console.log(htmlstring);
var htmlparsed = $(htmlstring)[0];
console.log(htmlparsed);
// You could even create a function to handle the normalization of quotes
function norm_quotes(str){
return $(str)[0];
}
console.log(norm_quotes(htmlstring));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我建议你在 jQuery 解析字符串后才对字符串使用你的.indexOf("attr='value'")

希望对您有所帮助。

最新更新