2011-11-11 39 views
0

我有以下代碼使用Javascript - Click事件

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'); 
    } 
} 

但對於第一個元素這隻作品,以下元素沒有被觸發的單擊事件。

幫助。由於

+0

點擊第一個元素會發生什麼?是否有重新加載頁面或更改上下文? – Kangkan

+0

我正在實現jquery treeview插件http://bassistance.de/jquery-plugins/jquery-plugin-treeview/,如果用戶指定一個特定的節點ID,那麼我必須打開樹,直到該節點 – Rohit

回答

1

試試這個:

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是JavaScript的一個「錯誤「的值,所以只是把變量名稱將檢查它是否不爲零,不爲零,不確定等。
  3. 如果arr已經是一個數組o f jQuery對象,那麼就不需要再次將它包裝在jQuery對象中了(即不要做$(arr[i]))。如果它是一個普通的DOM元素或子數組,那麼上面的代碼就可以工作。
+0

nope ..不是工作尚未。 – Rohit

+1

你甚至不需要'if(element.length)'檢查 - 如果選擇器集是空的,jQuery將不樂意做任何事情。例如,'$('#idthatdoesntexist')。click()'什麼都不做。 –

+0

@Rohit你能解釋一下'arr'是如何設置的? – GregL

0
if(arr[i].length != 0){ 

那是{一個錯字?如果不是,那就可以解釋這個問題。

+0

ooops對不起,我錯過了寫封閉}謝謝 – Rohit