更改“添加到收藏夹" < tr>中的函数到< tbody> [英] Changing "Add to Favourites" functions from <tr> to <tbody>
问题描述
我得到了一堆书的代码,其中每本书都带有最喜欢的按钮
I got code for a bunch of books arranged in which has favourite button against each tr
这是我得到的代码
$(function() {
$('tr').click(function(e) {
const $parentTable = $(this).closest("table");
$(this).find('img.white-star').toggle();
$(this).find('img.yellow-star').toggle();
const $favs = $("tr").has('img.yellow-star:visible');
$parentTable.prepend($favs)
const favs = $favs.find("td:first").map((i, fav) => $(fav).data("id")).get();
//localStorage.setItem($parentTable.attr("id")+"favs",JSON.stringify(favs)); // uncomment this on server
})
let favs // = localStorage.getItem($(".ratingTable").attr("id")+"favs"); // uncomment when on your server
// favs = favs ? JSON.parse(favs) : []; // uncomment when on your server
favs = favs ? JSON.parse(favs) : ["Book A", "Book C"]; // remove this after testing
$.each(favs, function(i, fav) {
$("table tr td[data-id='" + fav + "']").each(function() {
$(this).parent().trigger("click")
});
});
});
td {
cursor: pointer;
}
img {
height: 25px;
}
.hide {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="ratingTable" id="table1">
<tr>
<td data-id="Book A">Magic by dalton</td>
<td>
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr>
<td data-id="Book B">The chair by Jhon</td>
<td>
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr>
<td data-id="Book C"> Book C</td>
<td>
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
</table>
我目前正在尝试制作一个与youtube类似的网站.我想在视频列表中添加上面的评分"选项.下面是我正在使用的代码
I am currently trying to make a site similar to youtube.I would like to have above Rating option to be added to list of videos.Below is code that I am working with
我想要这样:当用户点击分级时,我不仅希望保存视频名称的tr,而且还希望所有tr&应该选择该tbody下的td并将其保存到本地存储&刷新页面时保留,但在书单中仅选择和保存tr.我希望你能明白.
I would like to have this: when user click rating I want not only the tr of video name to be saved but all tr & td under that tbody should be selected and saved to localstorage & retained when refreshing the page but in book listing only tr is selected and saved . I hope you get it.
可以将评级"或添加到收藏夹"按钮从tr迁移到tbody.感谢您的帮助.谢谢
Can Rating or Add to favourite button migrated from tr to tbody .Any help is appreciated. Thanks
.white-star,
.yellow-star {
height: 25px;
}
.hide {
display: none;
}
.ratingTable {
width: 400px;
}
td {
cursor: pointer;
}
td[data-id] {
width: 300px;
}
#table1 {
width: 100%;
}
<table id="Music">
<tbody data-id="Video-A" class="searchable music">
<tr class="row">
<td rowspan="4" class="a"><img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">Music </a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : Music </span></td>
</tr>
<tr class="row">
<td rowspan="4" class="a"><img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">Music </a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : Music </span></td>
</tr>
</tbody>
</table>
<table id="Art">
<tbody data-id="Video-B" class="searchable art">
<tr class="row">
<td rowspan="4" class="a"><img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">art 1</a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : art </span></td>
</tr>
</tbody>
</table>
<table id="Art">
<tbody data-id="Video-D" class="searchable dance">
<tr class="row">
<td rowspan="4" class="a"><img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">dance 1</a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : dance </span></td>
</tr>
</tbody>
</table>
推荐答案
您需要将td更改为随处可见的body
You need to change td to tbody everywhere
并更改为此
$("table tbody[data-id='" + fav + "']").each(function() {
注意:每个小腿中不能只有一件以上的东西才能起作用,并且所有小体都必须在同一张桌子上
NOTE: You cannot have more than one thing in each tbody for this to work and ALL tbodies have to be in the same table
-
$(".fav").on("click",clickIt)
更改为const $tbody = $(e.target).closest("tbody");
- 删除地图中的
find("tbody")
- 还原所需的
<table class="ratingTable" id="videorating">
$(".fav").on("click",clickIt)
change toconst $tbody = $(e.target).closest("tbody");
- remove
find("tbody")
in the map - Restore needed
<table class="ratingTable" id="videorating">
完整代码
https://plungjan.name/SO/bookrating/vidrate.html
const clickIt = (e) => {
const $tbody = $(e.target).closest("tbody");
console.log($tbody.data("id"))
const $parentTable = $tbody.closest("table");
$tbody.find('img.white-star').toggle();
$tbody.find('img.yellow-star').toggle();
const $favs = $("tbody").has('img.yellow-star:visible');
$parentTable.prepend($favs)
const favs = $favs.map((i, fav) => $(fav).data("id")).get();
//localStorage.setItem($parentTable.attr("id")+"favs",JSON.stringify(favs)); // uncomment this on server
};
$(function() {
$('.fav').click(clickIt)
let favs // = localStorage.getItem($(".ratingTable").attr("id")+"favs"); // uncomment when on your server
// favs = favs ? JSON.parse(favs) : []; // uncomment when on your server
favs = favs ? JSON.parse(favs) : ["Video-A", "Video-D"]; // remove this after testing
$.each(favs, function(i, fav) {
$("table tbody[data-id='" + fav + "']").each(function() {
$(this).click()
});
});
});
td {
cursor: pointer;
}
img {
height: 25px;
}
.hide {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="ratingTable" id="videorating">
<tbody data-id="Video-A" class="searchable music">
<tr class="row">
<td rowspan="4" class="a">Video-A: <img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">Music </a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : Music </span></td>
</tr>
</tbody>
<tbody data-id="Video-B" class="searchable music">
<tr class="row">
<td rowspan="4" class="a">Video-B: <img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">Music </a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : Music </span></td>
</tr>
</tbody>
<tbody data-id="Video-C" class="searchable art">
<tr class="row">
<td rowspan="4" class="a">Video-C: <img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">art 1</a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : art </span></td>
</tr>
</tbody>
<tbody data-id="Video-D" class="searchable dance">
<tr class="row">
<td rowspan="4" class="a">Video-D: <img src="https://img.youtube.com/vi/{{youtube video code }}/default.jpg" alt="" /></td>
<td class="a2"><a href="{{LINK to Yotube video}}">dance 1</a></td>
<td rowspan="4">
<div class="fav">
<img class="white-star" src="https://i.postimg.cc/g0b9JG0w/unfav.png" />
<img class="yellow-star hide" src="https://i.postimg.cc/QN1T9bSH/fav.png" />
</div>
</td>
</tr>
<tr class="row">
<td class="b"><span class="child"> Date : 15-Apr-20 </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Length : </span></td>
</tr>
<tr class="row">
<td class="b"><span class="child">Category : dance </span></td>
</tr>
</tbody>
</table>
这篇关于更改“添加到收藏夹" < tr>中的函数到< tbody>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!