簡體   English   中英

為什么我的點擊處理程序僅適用於第一個元素?

[英]Why does my click handler only work for the first element?

我有以下代碼:

var hitarea = $("#c_" + $.fragment().category).parent().siblings('div.hitarea');
var arr = new Array();
arr.push(hitarea);

do{
  hitarea = $(hitarea.parent().parent().siblings('div.hitarea'));
  arr.splice(0,0,hitarea);
}while(hitarea.length > 0);

for(var i=0; i < arr.length; i++){
  var element = $(arr[i]);
  if(arr[i].length != 0){
    element.trigger('click');
  }
}

但這僅適用於第一個元素,並且不會觸發以下元素的click事件。

救命。

嘗試這個:

arr=[...]//array of elements

for(var i=0; i < arr.length; i++){
  var element = $(arr[i]);
  if(element.length){
    element.trigger('click');
  }
}

筆記:

  1. 您忘記了關閉外部for循環
  2. 無需檢查!= 0 0-0是否是JavaScript的“假”值之一,因此只需放置變量名即可檢查它是否不為零,不為null或未定義等。
  3. 如果arr已經是一個jQuery對象數組,則無需再次將其包裝在jQuery對象中(即,不要執行$(arr[i]) )。 但是,如果它是普通的DOM元素或子數組,那么上面的代碼將起作用。
if(arr[i].length != 0){

那是{錯字嗎? 如果沒有,那將解釋問題。

暫無
暫無

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

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