我有 2 個班級的家長/孩子。在父類中,我需要一種從單擊的元素回傳/查找子類的方法。
我得到:'find(...).toggle 不是一個函式'
這是一個最小的例子:
class card {
constructor(parent, element) {
this.parent = parent;
this.element = element;
}
toggle(expand) {
//Do stuff
}
}
class cards {
constructor() {
this.element = $(".cards");
this.cards = [];
this.element.children(".card").each((obj, el) => {
console.log(el);
this.cards.push(new card(this, $(el)));
});
$(document).click((event) => {
var clickedOn = $(event.target);
var $thisClosest = clickedOn.closest(".card");
find($thisClosest).toggle();
});
}
find(element) {
this.cards.forEach((obj, el) => {
if ($(el) == element)
return obj; // need to return the class card
});
};
}
var my_a = new cards();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div class="cards">
one asdf
<div class="card">card 1 asdf</div>
<div class="card">card 2 asdf</div>
</div>
uj5u.com熱心網友回復:
您應該使用this.cards.find而不是this.cards.forEach因為Array.forEach 不回傳任何值。
Array.find 將從匹配條件的陣列中回傳第一個元素。
find(element) {
return this.cards.find((card) => card.element.is(element)));
};
我還使用jQuery 的 .is()作為比較元素的更強大的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/378720.html
標籤:javascript 查询
上一篇:通過資料屬性獲取元素
