4

我知道 jquery.attr()对属性名称不区分大小写,但是当我从代码创建的文档创建元素时,它变得区分大小写。

这是解释问题的代码示例:

var mydoc = document.implementation.createDocument('a:b','c',null);
var myElement = mydoc.createElement("myelement");
myElement.setAttribute("attr1","val1");

alert($(myElement).attr("attr1"));//val1
alert($(myElement).attr("Attr1"));//undefined! , why?

var myElement2 = document.createElement("myelement2");
myElement2.setAttribute("attr1","val1");

alert($(myElement2).attr("attr1"));//val1
alert($(myElement2).attr("Attr1"));//val1

我已经在 chrome 22.0 和 jquery 1.8 上对其进行了测试。

更新:

似乎这不是jquery问题。

console.log(myElement.attributes['attr1']); //val1 , OK
console.log(myElement.attributes['Attr1']); //undefined ???

console.log(myElement2.attributes['attr1']); //val1 , OK
console.log(myElement2.attributes['Attr1']); //val1 , OK
4

2 回答 2

1

这是由于文档的类型,只需指定文档的类型(例如 HTML):

var mydoc = document.implementation.createHTMLDocument()

http://jsfiddle.net/ouadie/wwNhw/

于 2013-04-27T11:45:19.997 回答
1

您需要创建 html 的 documentType ( https://developer.mozilla.org/en-US/docs/DOM/DOMImplementation.createDocumentTypecreateDocument ) 并将其作为第三个参数传递给方法

var dt = document.implementation.createDocumentType('html', '', '');
var mydoc = document.implementation.createDocument('a:b','c',dt);

var myElement = mydoc.createElement("myelement");
myElement.setAttribute("attr1","val1");

console.log(myElement.attributes['attr1']); //val1 , OK
console.log(myElement.attributes['Attr1']); //val1 , OK !!!
于 2013-04-27T11:51:37.417 回答