2014-01-06 3 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

Почему у вас просто нет объявления функции за пределами обработчика событий щелчка? –

+0

Это всего лишь небольшой пример более крупного кода, я уже написал тонны кода и менял его, потребовалось бы около часа. – Paradoxis

+0

Проведите время, чтобы сделать это правильно;) –

ответ

5

пытаются имитировать щелчок $ на $ ("(» Оригинал"). .Second ") нажмите

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

Foo() метод только делегированы $ (". Оригинал ") нажмите событие, это неизвестно снаружи.

здесь обновляется fiddle

+2

или рефакторинг, предоставляющий функцию «foo()» видимый обоими, и называть его в обоих случаях, например '$ (". Original "). Click (function() { 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

Почему бы вам не использовать что-то вроде этого? ;)

+0

Я пытался заставить функцию использовать две разные кнопки и вызывать функцию отдельно, так как то, что я пытаюсь использовать, не имеет двух кнопок, вместо этого она вызывается вычислением. В любом случае спасибо за помощь – Paradoxis

Смежные вопросы