jQuery中的attr()是否强制小写
Does the attr() in jQuery force lowercase?
我正在尝试操作svg的"viewBox"属性,它看起来像这样:
<svg viewBox="0 0 100 200" width="100" ...> ... </svg>
使用
$("svg").attr("viewBox","...");
但是,这会在名为"viewbox"的元素中创建一个新属性。请注意小写字母,而不是预期的camelCase。还有其他我应该使用的功能吗?
我能够使用纯javascript来获取元素并使用设置属性
var svg = document.getElementsByTagName("svg")[0];
和
svg.setAttribute("viewBox","...");
Perhttp://www.w3.org/TR/xhtml1/#h-4.2"XHTML文档必须对所有HTML元素和属性名称使用小写。"
因此,为了避免XHTML文档中的属性转换为小写,您需要使用document.createElementNS()
创建指定名称空间的元素,如:
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('viewBox', '0 0 512 512’);
如果您计划添加<use/>
元素,您还需要在创建元素时指定名称空间以及xlink:href
属性,如:
var use = document.createElementNS('http://www.w3.org/2000/svg','use');
use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#your_svg_id');
您可以使用jQuery挂钩:
['preserveAspectRatio', 'viewBox'].forEach(function(k) {
$.attrHooks[k.toLowerCase()] = {
set: function(el, value) {
el.setAttribute(k, value);
return true;
},
get: function(el) {
return el.getAttribute(k);
},
};
});
现在jQuery将使用setter/getter来操作这些属性。
注意el.attr('viewBox', null)
会失败;你的勾手不会被召唤。相反,您应该使用el.removeAttr('viewBox').
在操作之前,您需要确保删除已经存在的属性
$("svg").removeAttr("viewBox")
然后重新创建
$("svg").attr("viewBox","...");
相关文章:
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 是否可以禁用jquery中的单个单选按钮
- 如何检查数组中的对象是否等于选项值
- 如何知道javascript for语句中的所有结果是否都是错误的
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- 是否可以在javascript中读取IE中的本地文件
- jQuery中的attr()是否强制小写
- JavaScript尾部调用中的函数是否经过优化
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 确定javascript中的html表对象是否具有<colgroup>是否
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 使用JavaScript或jQuery检查单选按钮选择是否与数组中的项目匹配
- Javascript中的模块模式和揭示模块模式是否仅在创建API时有用;s
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- 是否可以从html中的javascript调用.vbs文件
- javascript测试是否存在两个标志中的任何一个
- 如何确定套接字中的变量是否匹配
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素