$("ul").on("click", ".start", function() {
console.log("started");
var timeInput = $(this).parent().children('.time');
var timeInputValue = timeInput.val();
var milliSeconds = Number(timeInputValue)*60*1000;
console.log(milliSeconds);
setTimeout(function(){
alert("Time Over");
$(this).parent().children('.task').toggleClass("completed");
}
, milliSeconds);
})
....................................................................
<ul>
<li><span class="delete">X</span> <span class="start">S</span> <span class="task">Code ToDo</span></li>
<li><span class="delete">X</span> <span class="start">S</span> <span class="task">Read two books</span></li>
<li><span class="delete">X</span> <span class="start">S</span> <span class="task">Run</span></li>
</ul>
我知道我在setTimeout函数中错误地使用了this
关键字,但我想访问类.task
对应于start
的元素。
我该怎么做?
alert方法可以工作,但是toggleClass不能工作
你可以用arrow function
来做,
setTimeout(() => {
alert("Time Over");
$(this).parent().children('.task').toggleClass("completed");
}, milliSeconds);
如果你在ES5中编写代码,那么使用setTimeout
的第三个参数
setTimeout(function(_this){
alert("Time Over");
$(_this).parent().children('.task').toggleClass("completed");
}, milliSeconds, this);