2014-11-21 5 views
-3

У меня есть много событий щелчка в JQuery как это:Jquery связывание щелчков

$(".make").click(function() { 
    make() 
}) 
$(".go").click(function() { 
    go() 
}) 
$(".get").click(function() { 
    get() 
}) 
$(".set").click(function() { 
    set() 
}) 

Я хочу контролировать это в одном случае клика:

$(".make, .go, .do, .get, .set").click(function() { 
    var func = $(this).attr('class'); 
    setTimeout(func, 0) 
}) 

Но это не работает, как я могу управлять всеми событиями кликов, такими как метод выше?

+0

Вы можете оставить свой HTML? Там может быть много причин не работать! –

+0

Опубликовать HTML нечего, потому что селектора - это просто кнопки. – Lazy

+0

создать скрипку для этого –

ответ

4

попробовать это: -

$(".make, .go, .do, .get, .set").click(function() { 
var func = $(this).attr('class'); 
setTimeout(window[func], 0) 
}) 

Demo

+0

Спасибо, но этот метод не работает и не дает никаких ошибок. – Lazy

+0

@ Lazy, как вы определяете свои функции? –

+0

'function make() {alert (" test ")}' – Lazy

-5

Вы не можете использовать строки в качестве заполнителей для функции. Попробуйте так:

var myFunc = { 
    a: function(){alert('a');}, 
    b: function(){alert('b');} 
}; 
$('#a, #b').click(function(){ 
    myFunc[$(this).attr('id')](); 
} 

Ну, ладно techinically, вы можете использовать строки в SetTimeout, но содержимое строки будет оцениваться, то Javascript время выполнения не будет идти и искать функцию, которая имеет то же имя в качестве строки, то есть

setTimeout(function() {alert('A');}, 0); 
// equals to this 
setTimeout("alert('A')", 0); 
// but 
function a(){ alert('A');} 
setTimeout('a', 0) 
// will fail 
+1

Технически вы можете, и он есть. Является ли это советом или нет, это другая проблема. Вы не ответили на его вопрос. –

+0

вы можете, если используете весь контент функции. вы не можете определить 'function a() {}', а затем сделать 'setTimeout ('a', 0)' – lordvlad

+0

Может ли downvoters, пожалуйста, уточнить? – lordvlad

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