有没有办法使用jQuery添加区分大小写的属性?

有没有办法使用jQuery添加区分大小写的属性?,jquery,svg,Jquery,Svg,我正在使用jQuery动态修改一些svg文件数据。。。我需要做的一件事是修改“viewBox”属性。但是,在下面的代码段中使用jQuery时,它对属性执行toLower()操作,因此“viewBox”变为“viewBox”。通常我不会在意,但这似乎破坏了svg渲染(至少在finder和Safari中的MacOSX上) 有没有一种方法可以在jQuery中本地修改它(通过标志或其他方式),或者之后我必须进行字符串替换 var $svg = $('<svg xmlns="http://www.w

我正在使用jQuery动态修改一些svg文件数据。。。我需要做的一件事是修改“viewBox”属性。但是,在下面的代码段中使用jQuery时,它对属性执行toLower()操作,因此“viewBox”变为“viewBox”。通常我不会在意,但这似乎破坏了svg渲染(至少在finder和Safari中的MacOSX上)

有没有一种方法可以在jQuery中本地修改它(通过标志或其他方式),或者之后我必须进行字符串替换

var $svg = $('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"></svg>');
// do some work here
$svg.attr('viewBox', 0 + ' ' + 0 + ' ' + 288 + ' ' + 288);
var$svg=$('');
//在这里做些工作
$svg.attr('viewBox',0+''+0+''+288+''+288);

除非您想修改库本身,否则我看不出任何方法可以避免进行字符串替换。

如果您只是为了设置属性而退出jQuery对象,该怎么办。e、 g

var $svg = $('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"></svg>');

$svg[0].setAttribute('viewBox', 0 + ' ' + 0 + ' ' + 288 + ' ' + 288);
var$svg=$('');
$svg[0].setAttribute('viewBox',0+'+0+'+288+'+288);

注意:您可能还想签出这个jQuery插件:

您可以使用SVG DOM API设置viewBox:

$svg.each(function(index,node){
    node.viewBox.baseVal.x = 0
    node.viewBox.baseVal.y = 0
    node.viewBox.baseVal.width = 288
    node.viewBox.baseVal.height = 288
})

更多信息可以在SVG规范中找到:

这可能不是您想要的,但是您是否考虑过使用XSL转换文件?这是一种更为常见的方法……这基本上是我为了解决这个问题所必须做的。我注意到,当从选择器显示元素时,jquery不能正确报告更新的svg属性值,但节点本身将反映更改。