$(function(){
$(".test").each(function(){
test();
});
});
function test(){
$(this).css("border","1px solid red").append(" checked");
}
为什么这不起作用?我错过了什么? 这是我的测试html:
<p>test</p>
<p>test</p>
<p class="test">test</p>
<p>test</p>
答案 0 :(得分:5)
$(this)不能以这种方式使用,因为你没有指定test()函数的上下文:
$(".test").each(function(){
test($(this));
});
function test(el){
el.css("border","1px solid red").append(" checked");
}
或
$(".test").each(function(){
test.call(this);
});
function test(){
$(this).css("border","1px solid red").append(" checked");
}
答案 1 :(得分:1)
在您的测试函数内部,this
不受您认为它所绑定的相同内容的约束。使用像firebug这样的调试器来查看你实际使用的是什么。
执行此操作的惯用方法是简单地在闭包内部包含测试主体(function(){...})。
其他解决方案,您可以使用apply函数(https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Function/Apply)来控制this
引用的内容。在这种情况下,它太过分了,实际上,我发现最好一般都避免使用它。
$(function(){
$(".test").each(function(){
$(this).css("border","1px solid red").append(" checked");
});
});
答案 2 :(得分:0)
test.call(this);
或test(this);
并更改定义。