jquery $这个问题

时间:2010-03-04 13:50:01

标签: jquery

请参阅此代码

$(function() {
    $('.do').deleteTable({
        parent: $(".do").parentsUntil("#did")

    });
});

它的作品 但如果我做到了

$(function() {
$('.do').deleteTable({
parent: $(this).parentsUntil("#did")
});
});

不起作用;为什么? 我将$(“。do”)替换为$(this)

4 个答案:

答案 0 :(得分:4)

{ parent: $(this).parentsUntil("#did") }是一个对象文字,在传递给deleteTable之前计算。

来自function的{​​{1}}不是deleteTablethis设置为每个具有类do的元素。

所以this是外function() { ... }的{​​{1}}:this

答案 1 :(得分:2)

这可能会有所帮助......

'this' demystified

答案 2 :(得分:1)

“this”可能是“窗口”对象,它不会有父母。

我猜你正在考虑如下情况:

$(function() {
    $('.do').click(function() {
    alert($(this).is('.do'));
    });
});

在上面的例子中,当函数由于click事件而运行时,那么“this”将是你期望它的$('。do')对象。但是,在你的情况下,“this”的上下文不是$('。do')

答案 3 :(得分:1)

当我处于类似的情况时,我做的第一件事是设置一个断点并检查(例如使用firebug),如果$(this)真的是我期待的那样。

99%的时间可以帮助我了解正在发生的事情。