2012-02-02 145 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 2012-02-02 22:46:19

+0

等待nm現在起作用。看起來這正是我想要的:D謝謝你在教我這方面的努力。 – Novazero 2012-02-02 22:46:32

+0

如果您對代碼有任何疑問,請隨時詢問 – 2012-02-02 22:48:22

2

,而不是擔心你應該只調用分配給各按鈕的功能單擊事件

,或者如果按鈕的某個按鈕需要做什麼其他三個按鈕先做它的情況下,它的功能應該包含那3個功能

+1

這是正確的,但有很多情況下這些功能是匿名功能,你真的需要觸發事件... – 2012-02-02 22:41:50

+0

是的,這就是爲什麼譚的答案不會幫助我在我的情況,因爲我的功能是匿名的。 – Novazero 2012-02-02 22:51:30

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(); 

此代碼是完全的ad-hoc並沒有測試

相關問題