簡體   English   中英

循環觸發點擊事件

[英]Trigger click event in a loop

我正在編寫一個書簽,以從我購買的Indiegala捆綁包中收集信息。 我不是一次贈與整個捆綁包,而是一次贈予連體衣和二人一組,因此擁有單獨的贈品網址會更容易。

在他們拿到鑰匙之前,我就可以用一個簡單的選擇器將其收集起來,現在他們有了一些圖片,您必須單擊才能獲得每個Steam / Desura游戲的禮物URL。

我想循環單擊所有這些禮物圖像,以使禮物URL出現,然后循環瀏覽並獲得這些禮物URL。 我這樣寫:

var gifts = $('#icon-gift img');
for(var j=0; j < gifts.length-1; j++){
  gifts[j].click();
}

循環瀏覽所有圖像並觸發點擊,以便出現禮物網址。 我知道它會遍歷每個圖像,因為它會記錄到控制台,所以我知道它不會卡住,但是由於某種原因,它僅單擊了可用的第一個圖像。 單擊圖像后(非常感激),它將被永久單擊,並且在刷新時僅包含禮物網址,然后如果我再次運行循環,它將執行下一個圖像(但這違背了在腳本中進行操作的目的)。

我嘗試在click()添加一個delay(500)甚至delay(1500) ,但這似乎並沒有改變。

我的問題是:有人知道為什么會發生這種情況嗎?是否有解決此問題的建議?

更多想法和信息

我認為這與異步性有關。 就像循環的其余部分一樣,除了其他click事件之外,其他所有操作都沒有。 我試過了:var gifts = $('#icon-gift img');

$.each(gifts, function(i, val){
  setTimeout(function(){
    val.click();
    val.remove();
  }, 1000);
});

並且它仍然只處理第一個圖像,並刪除所有其他圖像。 如果我手動檢查gifts[0].remove(); 然后gifts[0].click(); 它做下一個。 這正是我以為.each()for loop會做的事情,但是似乎無法執行下一次單擊,而前一個仍在執行或仍然存在。

無需使用for loop

$('#icon-gift img').click();

夠了 它將對所有通過選擇進行點擊#icon-gift img - >這是所有后代圖像#icon-gift 他們全部。

否則,您的代碼無法正常工作,原因是使用了gifts[j] ,實際上是從jQuery選擇器的數組中提取對DOM HTML節點元素的JS引用,因此不再是jQuery Object元素。 將其再次包裝在jQuery對象中將可以使用$(gifts[j])或使用eq()選擇器(如gifts.eq(j) ,但是如上所述,也不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM