3 回答
TA贡献1891条经验 获得超3个赞
您无需使用 jQuery 即可完成此操作。
let index = [...this.parentElement.childNodes].indexOf(this);
TA贡献1818条经验 获得超3个赞
问题是因为this第一行引用了windowElement,所以find('.days')不返回任何内容。因此索引始终为-1。
index()要解决此问题,只需在单击的元素上使用:
const $days = $("#calendar .day").on("click", function() {
console.log("index", $(this).index());
});
td {
padding: 10px;
border: solid black 1px;
}
table {
border-collapse: collapse;
}
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<div id="calendar">
<table>
<tr>
<td id="1" class="day">1</td>
<td id="2" class="day">2</td>
<td id="3" class="day">3</td>
<td id="4" class="day">4</td>
<td id="5" class="day">5</td>
<td id="6" class="day">6</td>
<td id="7" class="day">7</td>
</tr>
</table>
</div>
TA贡献1786条经验 获得超11个赞
当你构建 jQuery 元素列表时.day
,它应该是
const $days = $("#calendar .day");
在全局级别,this
将是对它的引用window
,并且 jQuery 将无法使用它。因此,您得到的-1
意思是该元素不在列表中。
- 3 回答
- 0 关注
- 103 浏览
添加回答
举报