在所有jquery示例中,我都看到了这种代码:
$('.menu a').each(function(){
$(this).animate({paddingLeft: $(this).width()}, 200);
});
他们在这里做的是“动态”创建一个功能(被称为匿名代表?)
但如果我有一个现有的函数,想要访问$(this)呢?
让我说我有这个功能:
function doAnimate(ctl){
//do something here
{
如何在jquery语句中使用该函数?
我问的原因是我想在更多的jquery语句中使用这个函数,而且我不想多次输入匿名委托。
我试过这个,但这给了我一个错误:
$("#<%=txtReceiverEmailEcard1.ClientID %>").blur(blurWatermark($(this), 'Your email address'));
答案 0 :(得分:5)
这是来自jQuery API documentation
更重要的是,回调是 在当前的背景下被解雇了 DOM元素,所以这个关键字 是指元素。
方法的签名是
.each(function(index,Element))
function(index,Element)一个函数 执行每个匹配的元素。
然后你可以写
$('.menu a').each(myFunction)
function myFunction(index, Element) {
alert(this); /* this points to the element */
}
这基本上意味着你可以获得回调的所有好信息(如索引)。
答案 1 :(得分:2)
简单地:
$('.menu a').each(doAnimate)
无论匿名函数在哪里工作,对“普通”函数的引用都可以正常工作。 :)然后你需要使用像
这样的函数参数function doAnimate (index, elem) {
$(elem).animate({paddingLeft: $(elem).width()}, 200);
}
答案 2 :(得分:1)
您可以尝试类似
的内容$('.menu a').each(function(){
doAnimate($(this));
});
如果它是可重用的,那么开发一个plugin,您可以轻松地与jQuery对象关联。