单击获取节点的索引

时间:2014-09-09 19:17:37

标签: javascript html yui

我尝试使用delegateindexOf方法获取YUI中的标签索引 - 具体来说,我想要删除内容中点击图片的标签 li 元素:

var tabView = new Y.TabView({
    srcNode: '#data-table'
});
...
//creating tabs
...
var removeTab = function(e) {
    var tabList = e.container.all('li'); //returns a list of the 'li' elements/tabs
    tab = tabView.indexOf(e.currentTarget);
    alert(tab); //returns -1 (node not found)   
    //tabView.remove(tab);         
}
Y.one('#data-table').delegate('click', removeTab, 'img');//on click of the img, launch removeTab

我不相信YUI有一种更简单的方法 - 我发现的大多数指南已经过时或者没有以同样的方式删除标签。

1 个答案:

答案 0 :(得分:1)

问题是委托处理程序是在img元素上设置的 - 所以e.currentTarget将引用<img>元素(已被点击)。

但是,使用e.container.all('li'),您可以检索<li>元素的集合。当然,此集合中的任何元素都不能等于<img>。这就是indexOf失败的原因。

一种可能的解决方案是首先找到<li>元素的<img>父元素,然后检查其索引:

var liClicked = e.currentTarget.ancestor('li');
var tabIndex  = tabList.indexOf(liClicked);