Jquery:将现有函数添加到Jquery事件

时间:2011-01-14 08:56:48

标签: jquery

在所有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'));

3 个答案:

答案 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对象关联。