Интересный вопрос!
Для (1) Y.all (...) возвращает NodeList.К сожалению, возвращаемое значение «get» для nodeList, как ни странно, является другим NodeList, который интерпретируется при выводе предупреждения на то, что вы видите.Использование «getAttribute» вместо «get» приводит к более разумному (хотя, может быть, и бесполезному) выводу.
For (2) Чтобы достичь того, что вы хотите, вам нужно либо явно зациклить NodeList, либо использовать«делегат». Использование «делегата» гораздо более эффективно для страницы и позволяет динамически вставлять элементы «li», но «indexOf» может заметно замедляться с сотнями или тысячами элементов списка.
Использование каждого:
Y.all(".link").each(function (node, index) {
node.on("click", function(em){
alert("you clicked on "+ index +" link.");
node.addClass("clicked");
alert(node.getAttribute("class"));
});
});
Использование делегата:
Y.one('ul').delegate("click", function (em) {
var itemList = em.container.all('li');;
var node = em.currentTarget;
alert("you clicked on "+ itemList.indexOf(node) +" link.");
node.addClass("clicked");
alert(node.getAttribute("class"));
}, 'li');