2013-08-29 39 views
8
<script> 
    $(document).ready(function(){ 
    //Load City by State 
    $('#billing_state_id').live('change', function() { 
     //do something 
    }); 
    $('#click_me').live('click', function() { 
     //do something 
     //need to recall $('#billing_state_id').live('change', function() { but how? 
    }); 
    }); 
</script> 

Load State by State正常工作,但我不知道是否可以在另一个函数中调用它,如$('#click_me').live('click', function()如何从另一个函数调用Jquery中的函数

+1

'.live'已被弃用,请使用'on'(查看手册页,它非常具有描述性,而且jQuery只是JavaScript .. 。你调用一个函数就像你在任何其他点与JS –

+1

我建议你使用on()函数对live()。由于直播已被弃用。 –

+0

那么,我决定恢复我的答案。事实上,我不知道为什么我应该公平,而其他人不是。此外,在这个问题上有太多的降薪提案,我看不出有什么好的理由。 – leaf

回答

9

我假设你不想重新绑定事件,而是调用处理函数。

您可以使用trigger()触发事件:

$('#billing_state_id').trigger('change'); 

如果处理程序不依赖于事件的背景下,你不希望引发其他处理的事件,你也可以命名功能:

function someFunction() { 
    //do stuff 
} 

$(document).ready(function(){ 
    //Load City by State 
    $('#billing_state_id').live('change', someFunction); 
    $('#click_me').live('click', function() { 
     //do something 
     someFunction(); 
    }); 
    }); 

还要注意的是live()已被弃用,on()是新的辣味。

+0

更好的方法是只让名为函数而不是匿名。这也会触发所有其他处理程序附加到该事件。 –

+0

这取决于意图。也许它需要触发附加到事件的其他处理程序。 –

+0

这是一种可能性,但似乎并不像OP在他的问题描述中试图做的那样。 –

2

包你共享代码到另一个功能:

<script> 
    function myFun() { 
     //do something 
    } 

    $(document).ready(function(){ 
    //Load City by State 
    $(document).on('change', '#billing_state_id', function() { 
     myFun(); 
    }); 
    $(document).on('click', '#click_me', function() { 
     //do something 
     myFun(); 
    }); 
    }); 
</script> 
+1

为什么你用另一个函数包装函数?你可以做'click',myFun);'也请注意,'.live'已被弃用。 –

+2

@BenjaminGruenbaum:设计更简洁。明确地调用一个事件处理程序(而不是等待事件分派给它)强烈暗示除了处理用户交互之外的一些功能('业务逻辑',如果你想这么说的话)并且独立于事件的语义。这个代码部分应该因此被分解出来,想象以后会增加更多的处理到'change'事件处理程序中,这对于这个事件来说是非常特殊的。直接从其他代码部分调用处理程序会以难以检测的方式破坏应用程序。 – collapsar

+0

我想你混淆了我想说的话我并不是说你应该使用'.click()'或'.change()'来手动触发事件(参见我对其他answeR的评论)。我所说的是写'myFun'而不是'function(){myFun()}',因为'myFun'已经是一个函数了,并且你将它包装在另一个函数表达式中, )我说的第二件事是'.live'已被弃用(如果我正确记得,因为jQuery 1.7)并且不应该在新代码中使用。 '.on'应该比它优先。 –

0

我觉得在这种情况下,你想是这样的:)其他一些嵌套函数内

$(window).resize(resize=function resize(){ some code...} 

现在ü可以调用调整(:

$(window).scroll(function(){ resize();} 
相关问题