我不习惯使用this
并试图使一些简单的函数来回传递它。我不太确定javascript期望什么,但是我认为我做的不正确。
$(".search-result").each(function() {
var x = $(this).find('.past-positions ol').children()
console.log(x)
//this prints as expected
pastJobs(this)
// this does not
})
function pastJobs() {
var x = $(this).find('.past-positions ol').children()
console.log(x)
// this prints as undefined
}
我认为可以将this
传递给函数,但是我认为我这样做的方式不正确。
我在做什么错了?
答案 0 :(得分:4)
改为尝试pastJobs.call(this)
。
答案 1 :(得分:1)
实际上,这里pastJobs(this)
是将词法上下文this
作为参数传递,而不是将该上下文绑定到函数。
您可以使用函数bind
来实现所需的功能:
pastJobs.bind(this)()
答案 2 :(得分:1)
PS> [enum]::GetNames($xlConstants) |
Select @{ n='Name'; e={$_} }, @{ n='Number'; e={ $xlConstants::$_.Value__ } }
Name Number
---- ------
xlAbove 0
xlFirst 0
xlDirect 1
# ...
您正在传递pastJobs(this)
作为参数
并且您的函数不接受参数this
。因此在function pastJobs()
中进行$(this)
确实是没有上下文的。
您可以调用函数pastJobs
/ .call(this)
或.apply(this)
,然后调用它。 (bind仅绑定该对象,但不同于apply或call不会调用该函数。
请记住,bind()
和call
在apply
对象之后以不同的方式接受参数。 this
方法分别接受参数。
call()
方法将参数作为数组。
您需要类似
apply()