请参阅此代码
$(function() {
$('.do').deleteTable({
parent: $(".do").parentsUntil("#did")
});
});
它的作品 但如果我做到了
$(function() {
$('.do').deleteTable({
parent: $(this).parentsUntil("#did")
});
});
不起作用;为什么? 我将$(“。do”)替换为$(this)
答案 0 :(得分:4)
{ parent: $(this).parentsUntil("#did") }
是一个对象文字,在传递给deleteTable
之前计算。
来自function
的{{1}}不是deleteTable
,this
设置为每个具有类do
的元素。
所以this
是外function() { ... }
的{{1}}:this
。
答案 1 :(得分:2)
这可能会有所帮助......
答案 2 :(得分:1)
“this”可能是“窗口”对象,它不会有父母。
我猜你正在考虑如下情况:
$(function() {
$('.do').click(function() {
alert($(this).is('.do'));
});
});
在上面的例子中,当函数由于click事件而运行时,那么“this”将是你期望它的$('。do')对象。但是,在你的情况下,“this”的上下文不是$('。do')
答案 3 :(得分:1)
当我处于类似的情况时,我做的第一件事是设置一个断点并检查(例如使用firebug),如果$(this)真的是我期待的那样。
99%的时间可以帮助我了解正在发生的事情。