2013-08-29 187 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();} 
相關問題