我正在尝试获取两个div .class-date
和.class-time
的字符串,但我得到一个未捕获的TypeError“e.siblings不是一个函数”。这可能是一个基本的错误,但我无法解决。任何指向正确方向的人都会非常感激。
var Cc = {
init: function() {
Cc.bindEvent();
},
bindEvent: function() {
$('.book-class').on("click", function() {
let selectedclass = this;
Cc.parseClass(selectedclass);
});
},
parseClass: function(selectedclass) {
let classdate = selectedclass.siblings('.class-date').text();
let classtime = selectedclass.siblings('.class-time').text();
console.log(classdate, classtime);
}
}
jQuery(document).ready(function($) {
Cc.init();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="class">
<div class="class-date">Thursday, 1 January</div>
<div class="class-time">18:00 — 20:00</div>
<div class="book-class">Book Class</div>
</div>
答案 0 :(得分:2)
在click
回调函数中,this
是一个HTMLElement,你将其视为jQuery对象。
将let selectedclass = this;
更改为let selectedclass = $(this);
答案 1 :(得分:0)
您也可以跳过bindEvent
点击处理程序中的匿名函数,并将CC.parseClass
作为参考传递。它会将this
内parseClass
的内容更改为事件发生的元素,这可能会或可能不会混淆使用this
var Cc = {
init: function() {
Cc.bindEvent();
},
bindEvent: function() {
$('.book-class').on("click", Cc.parseClass);
},
parseClass: function(event) {
// `this` is element from event handler
let $selectedclass = $(this);
let classdate = $selectedclass.siblings('.class-date').text();
let classtime = $selectedclass.siblings('.class-time').text();
console.log(classdate, classtime);
}
}
$(function() {
Cc.init();
});