2014-07-21 129 views
0

我使用dojo。從列表中獲取元素。 Dojo

dojo.ready(function() 
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class 
    input.on("click", function(i) { 
     console.log(input[i]); 
     // function 
     }); 
    }); 

所以問題是:我得到未定義的元素,所以我不能使用任何函數。我如何從列表中獲得uniqe元素。 謝謝

回答

1

傳遞給on的回調參數是一個Event對象,而不是索引。試試做

input.on("click", function(e) { //event object is conventionally named "e" or "evt" 
    console.log(e); 
}); 

IIRC,輸入節點本身應該在e.target屬性中可用。

https://dojotoolkit.org/reference-guide/1.10/dojo/on.html#id4

+0

當我嘗試使用它CONSOLE.LOG(e)返回我: 的MouseEvent {數據傳遞:空,toElement:輸入#fio_dojo.dijitReset.dijitInputInner,... 當我嘗試使用e.append( 「」 )它說我: 未捕獲TypeError:undefined不是函數main.html:84 (匿名函數) – uniqalien

+0

@uniqalien:如預期的那樣,e是Event對象,而不是Dom節點。你可以用e.target獲取dom節點,然後用它做適當的DOM方法。 – hugomg

2

EDIT1:
有在這裏http://jsfiddle.net/frank123/YYyH9看看的jsfiddle。

您可以使用查詢結果在foreach功能如下圖所示

dojo.ready(function(){ 
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class 
    input.forEach(function(node, index, arr){ // node is the elment 
     console.log("Index"+index); 
     dojo.on(node,"click", function() { 
      console.log("Clicked!"); 
      // function 
     }) 
    }); 
}); 
+0

「on」回調的參數是一個事件,而不是索引。即使你刪除了這個論點,這也是行不通的。回調觸發時'index'將始終爲4。 –

+0

哎呀!經典的關閉錯誤...需要一個IIFE綁定索引。 – frank

+0

我嘗試使用它,結果是(在頁面準備就緒): http://screencast.com/t/xVAL0PY3 – uniqalien

-1

我認爲這個建議坦率代碼,並使用dojo.connect代替dojo.on

dojo.ready(function(){ 
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class 
    input.forEach(function(node, index, arr){ // node is the elment 
     dojo.connect(node, "onclick", function() { 
     console.log("Clicked!" + node); 
     // function 
      dojo.query(node).after(""); 
     }); 
    }); 
}); 

,並使用任何功能在節點上,我使用dojo.query(node)。 謝謝。

+0

你見過小提琴示例http://jsfiddle.net/frank123/YYyH9它使用dojo.on這是dojo的新事件處理函數。 – frank