Javascript 在创建jQuery元素后访问JSON数据
我从一个API接收JSON数据,创建jQuery元素并将它们附加到列表中 我如何使它能够在单击创建的HTML元素之一时,将该元素的原始JSON数据记录到控制台Javascript 在创建jQuery元素后访问JSON数据,javascript,jquery,json,Javascript,Jquery,Json,我从一个API接收JSON数据,创建jQuery元素并将它们附加到列表中 我如何使它能够在单击创建的HTML元素之一时,将该元素的原始JSON数据记录到控制台 cards.forEach(function (card) { var $newCard = $("<li>" + card.name + "</li>"); $newCard.click(function () { // gives me the HTML, but I don't
cards.forEach(function (card) {
var $newCard = $("<li>" + card.name + "</li>");
$newCard.click(function () {
// gives me the HTML, but I don't see the properties of the
// object it was created from.
console.log(this);
});
cardsContainer.append($newCard);
});
cards.forEach(功能(卡片){
var$newCard=$(“”+card.name+“ ”);
$newCard.单击(函数(){
//给我HTML,但我看不到
//对象,该对象是从中创建的。
console.log(this);
});
cardsContainer.append($newCard);
});
我猜我可以在字符串HTML中添加一个
onclick
函数?是否有一种方法可以通过JavaScript来实现这一点?我猜您看起来是这样的:
var cardsContainer=$(“#容器”),
卡片=[{
姓名:“一”
}, {
姓名:“两个”
}, {
姓名:"三",,
测试:“asd”
}]
卡片。forEach(功能(卡片){
var$newCard=$(“”+card.name+“ ”).data('extra',card.)。on('click',函数(e){
log($(this.data('extra'));
});
cardsContainer.append($newCard);
});代码>
您可以使用jQuery将整个对象存储在新的$newCard
变量中
例如:
var $newCard = $("<li>" + card.name + "</li>");
$newCard.data("myOriginalObject", card);
$newCard.click(function () {
// Should now print the original object correctly
console.log($(this).data("myOriginalObject"));
});
var$newCard=$(“”+card.name+“ ”);
$newCard.data(“myOriginalObject”,card);
$newCard.单击(函数(){
//现在应正确打印原始对象
log($(this.data(“myOriginalObject”));
});
只需访问卡,因为它位于函数闭包内
cards.forEach(function (card) {
var $newCard = $("<li>" + card.name + "</li>");
$newCard.click(function () {
console.log(this); //will be the LI
console.log(card); //this will be the card
});
cardsContainer.append($newCard);
});
cards.forEach(功能(卡片){
var$newCard=$(“”+card.name+“ ”);
$newCard.单击(函数(){
console.log(this);//将是LI
console.log(card);//这将是卡
});
cardsContainer.append($newCard);
});
就是这样!非常感谢。我尝试了.data()。我忘了使用$(this.data()
,而不仅仅是this.data()
。正如我的答案所示,为什么不直接访问卡呢。。它在一个闭包中,不需要jquery.data..啊,伙计,我觉得自己很笨。怪不得我在这上面什么地方都找不到答案…:PNO需要感觉到哑巴,来自德尔菲/ C++,我花了一些时间来把头关上。