javascript - 下一个 td 添加类
问题描述
你能帮助我吗?JS 不是我的领域。我想在 td 之前的元素之后添加 td 类。我在表中有这个代码:
<td><span class="day event">24</span></td>
<td><span class="day">25</span></td>
如果 td before 是 class .event ,我每次都需要添加 td class .event 之后的下一个 td 将是 td class "after-event"
例子:
<td><span class="day event">24</span></td>
<td class="after-event"><span class="day">25</span></td>
即使单元格之间有 tr,我也需要它工作 谢谢!
这是WP插件的默认javascript:
//Build calendar of a month from date
buildCalendar: function (fromDate, calendar) {
var plugin = this;
calendar.find('table').remove();
var body = $('<table class="calendar"></table>');
var thead = $('<thead></thead>');
var tbody = $('<tbody></tbody>');
//Header day in a week ( (1 to 8) % 7 to start the week by monday)
for (var i = 1; i <= this.settings.days.length; i++) {
thead.append($('<td class="day-name">' + this.settings.days[i % 7].substring(0, 3) + '</td>'));
}
//setting current year and month
var y = fromDate.getFullYear(),
m = fromDate.getMonth();
//first day of the month
var firstDay = new Date(y, m, 1);
//If not monday set to previous monday
while (firstDay.getDay() != 1) {
firstDay.setDate(firstDay.getDate() - 1);
}
//last day of the month
var lastDay = new Date(y, m + 1, 0);
//If not sunday set to next sunday
while (lastDay.getDay() != 0) {
lastDay.setDate(lastDay.getDate() + 1);
}
for (var day = firstDay; day <= lastDay; day.setDate(day.getDate())) {
var tr = $('<tr></tr>');
//For each row
for (var i = 0; i < 7; i++) {
// var td = $('<td><span class="day">' + day.getDate() + '<span class="room-price">12$</span>' + '</span></td>');
var td = $('<td><span class="day">' + day.getDate() + '</span></td>');
//if today is this day
var ymd = day.getFullYear() + '-' + day.getMonth() + '-' + day.getDay();
var ymd = this.formatToYYYYMMDD(day);
// console.log(ymd);
if ($.inArray(this.formatToYYYYMMDD(day), plugin.events) !== -1) {
// console.log('found');
td.find(".day").addClass("event");
// tr.find(".test").addClass("event");
}
//if day is previous day
if (day < (new Date())) {
td.find(".day").addClass("wrong-day");
}
if (day.toDateString() === (new Date).toDateString()) {
td.find(".day").addClass("today");
td.find(".day").removeClass("wrong-day");
}
//if day is not in this month
if (day.getMonth() != fromDate.getMonth()) {
td.find(".day").addClass("wrong-month");
}
//Binding day event
td.on('click', function (e) {
// /alert('ok');
});
tr.append(td);
day.setDate(day.getDate() + 1);
}
tbody.append(tr);
}
body.append(thead);
body.append(tbody);
var eventContainer = $('<div class="event-container"></div>');
calendar.append(body);
calendar.append(eventContainer);
}
解决方案
如果您的event
课程仅使用您在线发布的 js 代码添加:
if ($.inArray(this.formatToYYYYMMDD(day), plugin.events) !== -1) {
td.find(".day").addClass("event");
}
只需在其后添加这一行:
if ($.inArray(this.formatToYYYYMMDD(day), plugin.events) !== -1) {
td.find(".day").addClass("event");
td.find(".day").parent().next().addClass("after-event");
}
event
如果您必须在 上设置类的逻辑,那将使用相同的逻辑td
,并搜索相同的下一个兄弟姐妹td
和类...
$("td").find(".day").addClass("event");
$("td").find(".day").parent().next().addClass("after-event");
.event {
color: blue;
}
.after-event *{
color: red !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td><span class="day">24</span></td>
<td><span class="day">25</span></td>
</tr>
</table>
推荐阅读
- javascript - Google Ads 未在 PHP 中的网站页面上显示
- javascript - 如何使用 jQuery 交叉淡化图像
- java - 如何从片段中的 JSON 响应中的对象获取数据
- spring-boot - 如何发布重命名的 bootJar?
- python - 尝试了解 Python 中的 Soundex 算法
- amazon-web-services - 如何获得胶水爬虫事件状态?
- android - 使用 DB 的图章板
- react-native - 无法在 React Native 0.60.3 上安装 react-native-unimodules
- flutter - 如何从命令行添加包?
- vue.js - Vue Kendo Scheduler 如何从外部源实现 Drop 事件:即列表