将数据添加到自己创建的HTML对象

时间:2014-09-29 15:08:18

标签: javascript jquery html

这有什么原因不起作用吗?

 var link = $('<a href="#" class="choose-delivery-pickup">Kies</a>');
            link.data('name', address.name);
            link.data('street', address.street);
            link.data('number', address.nr);
            link.data('zip', address.zip);
            link.data('city', address.city);

var message = $('<div style="min-width:150px;"><address><strong>' + address.name + '</strong><br>' + address.street + ' ' + address.nr + '<br>' + address.zip + ' ' + address.city + '</address>' + String(link) + '</div>');

返回:

    <div style="min-width:150px;" class="">
      <address>
        <strong>John</strong><br>
          Street 81<br>
          Doe Doe
      </address>
      [object Object]
    </div>

地址参数用普通字符串填充,所以没有问题。

1 个答案:

答案 0 :(得分:0)

如果您希望该代码添加属性,那不是data所做的。 data永远写入data-*属性,它只是用它们进行初始化。初始化后,datadata-*属性管理的数据之间没有任何关联。

如果您需要属性,请改用link.attr("data-name", address.name)等。

但是,如果您只是担心在检查时您没有看到元素上的数据,但是您对使用data感到满意,那么您的代码确实有效。 jQuery以DOM检查器中未显示的方式管理数据缓存。例如:

&#13;
&#13;
var address = {name: "address name"};

var link = $('<a href="#" class="choose-delivery-pickup">Kies</a>');
link.data('name', address.name);
display(link.data('name')); // "address name"


function display(msg) {
  $("<p>").html(String(msg)).appendTo(document.body);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;