Javascript 在jquery中使用attr()保持大写(区分大小写)

Javascript 在jquery中使用attr()保持大写(区分大小写),javascript,jquery,xml,Javascript,Jquery,Xml,我正在使用jQuery执行此操作: @xmlOut = $('<rules />') @xmlOut.attr('xsi:schemaLocation','test') @xmlOut=$('') @attr('xsi:schemaLocation','test') 我明白了: <rules xsi:schemalocation='test'></rules> “L”不再是大写…尝试使用不区分大小写的纯Javascript的setAttribute

我正在使用jQuery执行此操作:

@xmlOut = $('<rules />')
@xmlOut.attr('xsi:schemaLocation','test')
@xmlOut=$('')
@attr('xsi:schemaLocation','test')
我明白了:

<rules xsi:schemalocation='test'></rules>


“L”不再是大写…

尝试使用不区分大小写的纯Javascript的
setAttribute

@xmlOut.get(0).setAttribute('xsi:schemLocation', 'test');
有一张票

或者,您可以向jQuery添加属性钩子(使用小写名称),以便使用所需的setter方法。例如:

$.attrHooks['viewbox'] = {
    set: function(elem, value, name) {
        elem.setAttributeNS(null, 'viewBox', value + '');
        return value;
    }
};
然后可以使用.attr()设置区分大小写的属性:


Kevin的答案不正确,.setAttribute()将属性名称更改为小写

相反,使用element.setAttributeNS()和空字符串作为第一个参数

@xmlOut.get(0).setAttributeNS('', 'xsi:schemaLocation','test')

我认为
setAttribute
是小写的属性名称。我敢肯定我以前见过这种行为。很高兴我能帮上忙。顺便提一下,这是个好问题。例如:test=$('');test.get(0.setAttribute('test','lala')=>​​根据规范,这是不正确的:“当对HTML文档中的HTML元素调用setAttribute()时,属性名称会自动转换为所有小写形式。”非常感谢您,您应该在顶部。实际上,这是唯一的跨浏览器解决方案!要将XML样式添加到我的DataTables.net Excel导出项目中,我必须从.innerHTML和.insertAdjacentHTML(在Internet Explorer 11中都无法识别)切换到elt=document.createElement(“numFmt”)+elt.setAttribute(“formatCode”,“0”)(在Chrome和Firefox中小写)+numFmts.appendChild(elt),最终切换到elt.setAttributeNS(“0”,“formatCode”,“0”)!Precision:根据,您需要使用.createElements()和.setAttributeNS()在此处也可以看到我的完整答案:。希望它能帮助您!
@xmlOut.get(0).setAttributeNS('', 'xsi:schemaLocation','test')