2012-02-02 2 views
1

У меня возникли проблемы с этой проблемой, когда у меня есть одна кнопка, которая делает массовый щелчок других кнопок на странице. Хотя проблема в том, что я не хочу активировать все кнопки сразу и в основном выкладывать их до тех пор, пока другие кнопки не закончат свои действия.Как получить кнопку, чтобы щелкнуть другие кнопки

Page.MassCheckStats = function(){ 
     $('[data-field="button_update_stats"]').each(function(){ 
      $(this).click(); 
     }); 
    } 

Как я могу получить вышеуказанный код, чтобы щелкнуть по 3 кнопки за один раз, прежде чем переходить к другим кнопкам.

ответ

1

Вы можете использовать рекурсивные таймаута как это:

(извините, я забыл это было три кнопки одновременно);

Page.MassCheckStats = function(button){ 
    var button = typeof button == 'undefined'?$('[data-field="button_update_stats"]')[0] : button; 
    for(var i = 0; i < 3; i++){ 
     $(button).click(); 
     if($(button).next().length == 0) return; 
     button = $(button).next(); 
    } 
    setTimeout(function(){    
     Page.MassCheckStats($(button)); 
    }, 1000); 
} 

где 1000 = 1000 милисекунд = 1 второго

и вот скрипка для него: http://jsfiddle.net/andrepadez/cR4tP/2/

пихты линии внутри функции является Тренари оператором. это означает, что если вы не передадите какой-либо параметр, вызывающий функцию (при первом вызове), typeof button == 'undefined', поэтому он назначит var button первый элемент, выбранный селектором jQuery - $('[data-field="button_update_stats"]')[0]. Когда я вызываю это снова из таймаутов, я прохожу текущий $(button).next(), поэтому он будет считать, что было передано в параметре.

+0

Хмм, я щелкнул по щелчку, и ничего не произошло. – Novazero

+0

подождите, пока он работает. Похоже, это именно то, что я хотел: D спасибо за ваши усилия в обучении меня этому. – Novazero

+0

если у вас есть какие-либо вопросы по поводу кода, не стесняйтесь спросить –

2

вместо того, чтобы беспокоиться о кнопках, вы должны просто вызывать функции, назначенные каждой из кнопок мыши события

или если его случай определенной кнопки нуждающейся делать то, что делают первые три другие кнопки, его функции должен содержать эти 3 функции

+1

Это правильно, но есть много ситуаций, когда эти функции являются анонимными функциями, и вам действительно нужно вызвать событие ... –

+0

Да, поэтому ответ Тама не помог мне в моей ситуации, так как мои функции являются анонимными. – Novazero

1

Это звучит невероятно взломанно, но, возможно, вы можете подключить еще один обработчик кликов.

$(document).ready(function(){ 
    $buttons = $('[data-field="button_update_stats"]'); 

    // attach your original events here 

    for(var i = 0; i < $buttons.length-1; i++) { 
     $button = $($buttons.get(i)); 
     $button.click(function(){$($buttons.get(i+1)).click();}); 
    } 
} 


// to start the chain 
$($('[data-field="button_update_stats"]').get(0).click(); 

Этот код полностью одноранговой и не был испытан

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