避免jquery追加结束标记
Avoid jquery append closing tag
如何确保:
$('.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中插入到它之后。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 表追加而不附加最后一个元素
- 循环结束/推送到数组之前在页面上呈现EJS
- 在另一个函数成功结束后调用该函数
- 在动画结束之前调用函数
- 如何在jquery中停止在更改时追加值
- 希望日期开始结束于while循环中的一个房间id的一个数组
- JQuery.on(“keydown”)追加到页面时不工作
- 使用nunjucks时发生块结束错误
- HTML5获取弧的坐标's结束
- 内容结束时停止无限滚动
- 使用jQuery插入HTML页面的第一个项目缺少结束标记
- 如何在视频上显示海报图像使用Jquery结束
- 使用while循环+break是一种可接受的方式;goto;手术的结束
- jQuery[button.class]未检测到用按钮追加行
- 处理第三方库发送的ajax请求的开始和结束事件
- 结束后Javascript倒计时计时器重定向
- 如何在鼠标悬停时将对象从起始位置移动到结束位置,然后在鼠标悬停后再次移动
- 正在停止永不结束的追加.jQuery
- 避免jquery追加结束标记