2014-01-06 110 views
3

我試圖通過調用兩個按鈕來調用JQuery中的一個函數。 第一個按鈕按預期運行函數,第二個按鈕調用第一個按鈕使用的函數,但它不起作用。無法運行JQuery函數

這是我的代碼:

-----------------HTML----------------- 

<button class="Original">Original</button> 
<button class="Second">Second</button> 

----------------JQuery---------------- 

$(document).ready(function(){ 
    $(".Original").click(function foo(){ 
     alert("bar"); 
    }); 

    $(".Second").click(function(){ 
     foo(); 
    }); 
}); 

JSFiddle Example

我是一個newbie.Thanks提前幫助

+1

爲什麼你不在click事件處理程序之外有函數聲明? –

+0

這只是一個較大代碼的小例子,我已經寫了大量的代碼,並且需要花費大約一小時的時間 – Paradoxis

+0

花時間去做正確的;) –

回答

5

嘗試模擬的$點擊$( 「(」原始」)。 。第二 「)點擊

$(".Second").click(function(){ 
     $(".Original").click(); 
    }); 

富()方法只委託給$(」 原始「)點擊事件,它是外面未知。

這裏更新fiddle

+2

或者,提供函數「foo()」的重構兩者都可見,並在兩種情況下都會調用它,例如點擊(功能(){ foo(); });' – ShinTakezou

+0

模擬原始點擊將雛菊鏈事件。這可能是OP在尋找的東西,但對我來說,似乎將foo函數的範圍正確化更有意義。 – Askanison4

2

要調用另一個function.So中的一個函數,你不能把它directly.See此琴:http://jsfiddle.net/tRm3d/1/

$(document).ready(function(){ 
    $(".Original").click(function foo(){ 
     alert("bar"); 
    }); 

    $(".Second").click(function(){ 
     $(".Original").click().foo(); 
    }); 
}); 
0

FOO是第一次點擊事件的內部聲明。它不會在第二個範圍內提供。

見這個JS搗鼓的正確方法範圍此功能:http://jsfiddle.net/tRm3d/4/

var function foo() {} 

應該是點擊事件之外。

3

我的兩美分。

不確定爲什麼你不只是在事件處理程序之外有函數聲明。例如

// declare the function 
var foo = function(){ 
    alert('bar'); 
}; 

// bind click event handler for Original 
$('.Original').click(foo); 

// bind click event handler for Second 
$('.Second').click(foo); 

// call the function from anywhere 
foo(); 
0

你爲什麼不用這樣的東西? ;)

<button class="first">First</button> 
<button class="second">Second</button> 

$(function(){ 
    $('.first, .second').on('click', function() { 
     alert('You clicked me!'); 
    }); 
}); 
+0

我試圖讓函數使用兩個不同的按鈕,並分別調用該函數,因爲我試圖使用沒有兩個按鈕,而是通過計算調用。無論如何感謝幫助艱難 – Paradoxis