我目前正在使用jQuery和ES6做一个简单的Read Me切换。 这是我的代码,它可以在多个页面上阅读更多内容。ES6和jQuery选择器在点击函数中的作用域
class ReadMore {
constructor(cfg) {
this.toggle = $(cfg.el).find('.read-more-toggle');
var toggleText = $('.read-more-toggle').text().split(" ")[0];
$('.read-more-toggle').click(function(e) {
e.preventDefault();
if ($(this).hasClass("read-less-toggle")) {
$(this).parent().prev(".read-more").hide()
$(this).removeClass("read-less-toggle")
$(this).text(toggleText + " More");
} else {
$(this).parent().prev(".read-more").show();
$(this).text(toggleText + " Less");
$(this).addClass("read-less-toggle");
}
});
}
}
export default ReadMore;
我想知道那为什么当我使用this.toggle
它仅适用于未另一个实例read-more
的一个实例和,但是当我用$('.read-more-toggle')
直接它的工作原理。我想我对范围有点困惑。
在这里使用'class'似乎没有任何优势。它没有任何方法,而且你甚至没有使用'.toggle'字段 - 所以如果你不需要存储实例,只是不要创建它们,并使用一个简单的函数initReadMore(cfg)'而不是该构造函数。 – Bergi