单击 link 创建一个 json 对象
creating a json object on clicking a link
我正在尝试使用元素内的文本创建一个 json 对象,这样我就可以对它们进行会话存储并在另一个
中使用它们
<div class="single-product mb-60">
<div class="product-img">
<img src="assets/img/categori/product1.png" alt="" class='apparel_img'>
<div class="new-product">
<span>New</span>
</div>
</div>
<div class="product-caption">
<div class="product-ratting">
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star low-star"></i>
<i class="far fa-star low-star"></i>
</div>
<h4><a href="#" class='apparel'>Green Dress with details</a></h4>
<div class="price">
<ul>
<li class='price'>.00</li>
<li class="discount">.00</li>
</ul>
</div>
</div>
<div>
<a href="#" onclick="myfunc()">Add to cart</a>
</div>
这是html。我想制作一个看起来像这样的 json 文件
var my_product = {
"img" : img_src,
"product_name" : text_inside_first_a_link,
"cost" : first_list_item_under_ul
}
在我将它放入这个对象之后,我将 sessionStorage 它们用于不同的页面以使用它并使用 html 和 appendChild
将它们添加到购物车
sessionStorage.setItem("product_detail", my_product);
编辑:我已将 类 添加到我需要从
中提取信息的元素
function myfunc(){
var $items = $('.apparel, .price')
var obj = {}
$items.each(function() {
obj[this.className] = $(this).text()
})
$('body').append('<br><pre>'+JSON.stringify(obj, null, ' '))}
我只用两个 类 试过了,但没有用。它returns一个空对象
你可以在你的函数中传递 this
并使用 this
你可以使用 closest()
得到 single-product
div 然后只需使用 find()
以获得所需的值。
演示代码 :
function myfunc(el) {
//get closest div
var selctor = $(el).closest('div.single-product');
var obj = {}
//get datas
obj["img"] = selctor.find('img').attr('src'),
obj["product_name"] = selctor.find(".product-caption a").text(),
obj["cost"] = selctor.find(".price ul li:first").text()
console.log(obj)
//store in session
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="single-product mb-60">
<div class="product-img">
<img src="assets/img/categori/product1.png" alt="">
<div class="new-product">
<span>New</span>
</div>
</div>
<div class="product-caption">
<div class="product-ratting">
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star low-star"></i>
<i class="far fa-star low-star"></i>
</div>
<h4><a href="#">Green Dress with details</a></h4>
<div class="price">
<ul>
<li>.00</li>
<li class="discount">.00</li>
</ul>
</div>
</div>
<div>
<!--pass this in function-->
<a href="#" onclick="myfunc(this)">Add to cart</a>
</div>
我正在尝试使用元素内的文本创建一个 json 对象,这样我就可以对它们进行会话存储并在另一个
中使用它们 <div class="single-product mb-60">
<div class="product-img">
<img src="assets/img/categori/product1.png" alt="" class='apparel_img'>
<div class="new-product">
<span>New</span>
</div>
</div>
<div class="product-caption">
<div class="product-ratting">
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star low-star"></i>
<i class="far fa-star low-star"></i>
</div>
<h4><a href="#" class='apparel'>Green Dress with details</a></h4>
<div class="price">
<ul>
<li class='price'>.00</li>
<li class="discount">.00</li>
</ul>
</div>
</div>
<div>
<a href="#" onclick="myfunc()">Add to cart</a>
</div>
这是html。我想制作一个看起来像这样的 json 文件
var my_product = {
"img" : img_src,
"product_name" : text_inside_first_a_link,
"cost" : first_list_item_under_ul
}
在我将它放入这个对象之后,我将 sessionStorage 它们用于不同的页面以使用它并使用 html 和 appendChild
将它们添加到购物车sessionStorage.setItem("product_detail", my_product);
编辑:我已将 类 添加到我需要从
中提取信息的元素function myfunc(){
var $items = $('.apparel, .price')
var obj = {}
$items.each(function() {
obj[this.className] = $(this).text()
})
$('body').append('<br><pre>'+JSON.stringify(obj, null, ' '))}
我只用两个 类 试过了,但没有用。它returns一个空对象
你可以在你的函数中传递 this
并使用 this
你可以使用 closest()
得到 single-product
div 然后只需使用 find()
以获得所需的值。
演示代码 :
function myfunc(el) {
//get closest div
var selctor = $(el).closest('div.single-product');
var obj = {}
//get datas
obj["img"] = selctor.find('img').attr('src'),
obj["product_name"] = selctor.find(".product-caption a").text(),
obj["cost"] = selctor.find(".price ul li:first").text()
console.log(obj)
//store in session
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="single-product mb-60">
<div class="product-img">
<img src="assets/img/categori/product1.png" alt="">
<div class="new-product">
<span>New</span>
</div>
</div>
<div class="product-caption">
<div class="product-ratting">
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star"></i>
<i class="far fa-star low-star"></i>
<i class="far fa-star low-star"></i>
</div>
<h4><a href="#">Green Dress with details</a></h4>
<div class="price">
<ul>
<li>.00</li>
<li class="discount">.00</li>
</ul>
</div>
</div>
<div>
<!--pass this in function-->
<a href="#" onclick="myfunc(this)">Add to cart</a>
</div>