当我使用zepto.js从HTML字符串创建一个元素时:
element = $("<ul />", {id:"myID"});
console.log(element);
id“myID”未添加到元素中。控制台输出是:
[<ul></ul>]
根据http://zeptojs.com/ - &gt; $()它应该得到一个id:
>// create element with attributes:
>$("<p />", { text:"Hello", id:"greeting", css:{color:'darkblue'} })
>//=> <p id=greeting style="color:darkblue">Hello</p>
知道出了什么问题吗?或者这可能是一个错误?
编辑:
我有点像这样自己解决了这个问题:
element.attr('id', 'myID');
尽管不采取这样的额外步骤会更好......
答案 0 :(得分:1)
似乎在版本Zepto.js (1.0rc1)
中,这个api没有被引入。
请参阅tag v1.0rc1
中的第152行和第100-108行dom = zepto.fragment(selector.trim(), RegExp.$1), selector = null
zepto.fragment = function(html, name) {
if (name === undefined) name = fragmentRE.test(html) && RegExp.$1
if (!(name in containers)) name = '*'
var container = containers[name]
container.innerHTML = '' + html
return $.each(slice.call(container.childNodes), function(){
container.removeChild(this)
})
}
在master 中和第167行和第110-128行
dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null
zepto.fragment = function(html, name, properties) {
if (html.replace) html = html.replace(tagExpanderRE, "<$1></$2>")
if (name === undefined) name = fragmentRE.test(html) && RegExp.$1
if (!(name in containers)) name = '*'
var nodes, dom, container = containers[name]
container.innerHTML = '' + html
dom = $.each(slice.call(container.childNodes), function(){
container.removeChild(this)
})
if (isPlainObject(properties)) {
nodes = $(dom)
$.each(properties, function(key, value) {
if (methodAttributes.indexOf(key) > -1) nodes[key](value)
else nodes.attr(key, value)
})
}
return dom
}
另请阅读此issue。也许它会在1.0大的时候推出。
现在,在api可以工作之前,您可以使用以下代码执行此操作:
element = $("<ul />").attr({id:"myID"});