避免jquery追加结束标记

Avoid jquery append closing tag

本文关键字:结束 追加 jquery 避免      更新时间:2023-09-26

如何确保:

$('.graph svg').append('<polyline points="' + '3,' +point+ ' 97,' +point+ '"style="fill:none;stroke:#FFFFFF;stroke-width:0.5"/>');

实际上导致了一个自关闭标签..../>

而不是用</polyline> 关闭

出于某种原因,只有前者在iOS上渲染。

它根本不会产生任何标记;它在DOM中产生元素。标签是描述元素的文本方式。当您将该字符串提供给jQuery时,它会要求浏览器解析该字符串并在内存中创建元素(对象)。唯一涉及的标签是您提供给jQuery的标签。


根据您的更新(评论):

有没有其他方法可以避免append方法?这是一把拒绝在iOS上工作的小提琴http://jsfiddle.net/rCfrF/23

这在Chrome、Firefox或IE上也不适用。我不认为你可以像那样添加到SVG元素中,我认为jQuery试图创建一个HTML元素polyline,而不是SVG polyline(它是有名称空间的)。

这适用于Chrome、Firefox、IE和我的iPhone 5:JSBin上你的小提琴的更新版本(jsFiddle在我的iPhone上无法正常工作)

function clickappend() {
    var svg = $("#graph svg")[0];
    var polyline = svg.ownerDocument.createElementNS('http://www.w3.org/2000/svg', 'polyline');
    polyline.setAttribute("points", "20,0 20,100");
    polyline.style.fill = "none";
    polyline.style.stroke = "#232323";
    polyline.style.strokeWidth = "0.5";
    svg.appendChild(polyline);
    alert('ran');
}

您可以使用:

$('.graph svg').html($('.graph svg').html() + '<polyline points="' + '3,' +point+ ' 97,' +point+ '"style="fill:none;stroke:#FFFFFF;stroke-width:0.5"/>');

这是检查员的问题。void元素(又称自封闭元素)和其他元素之间有很大的区别,因为它们不能接受子节点。CCD_ 6就是这样一个空位元素。检查器可能会显示它有一个结束标记,但它不应该接受这样的方法——如果你试图在它的开始和结束标记之间插入内容,那么内容很可能会在DOM中插入到它之后。