这有什么原因不起作用吗?
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>
地址参数用普通字符串填充,所以没有问题。
答案 0 :(得分:0)
如果您希望该代码添加属性,那不是data
所做的。 data
永远将写入data-*
属性,它只是用它们进行初始化。初始化后,data
和data-*
属性管理的数据之间没有任何关联。
如果您需要属性,请改用link.attr("data-name", address.name)
等。
但是,如果您只是担心在检查时您没有看到元素上的数据,但是您对使用data
感到满意,那么您的代码确实有效。 jQuery以DOM检查器中未显示的方式管理数据缓存。例如:
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;