1

次のように zepto.js を使用して HTML 文字列から要素を作成すると:

element = $("<ul />", {id:"myID"});
console.log(element);

ID「myID」は要素に追加されません。コンソール出力は次のとおりです。

[<ul></ul>]

http://zeptojs.com/ -> $() によると、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');

このような余分な一歩を踏み出さない方がいいのですが...

4

1 に答える 1

1

Zepto.js (1.0rc1)このAPIが導入されていないバージョンのようです。

タグ v1.0rc1152行目と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)
    })
  }

マスター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
  }

この号もお読みください。大きな1.0の時に導入されるかもしれません。

そして今、API が動作する前に、以下のコードでこれを行うことができます:

element = $("<ul />").attr({id:"myID"});
于 2013-02-27T03:09:33.220 に答える