我在mootools中使用事件委托。我想知道点击的行号。我的解决方案显示在jsfiddle中:是否有比我目前更好的方式?
我的方法是比较元素直到找到匹配。我可以使用IndexOf方法吗?
(以下是来自jsfiddle的数据)
HTML:
<div id="Record_List">
<div class="Row">
<input type="submit" name="Row" value="Edit"/>
</div>
<div class="Row">
<input type="submit" name="Row" value="Edit"/>
</div>
</div>
使用Javascript:
window.addEvent(
'domready',
function()
{
$('Record_List').addEvent(
'click:relay(input)',
function(evt, target)
{
evt.stop();
var rowElem = target.getParent();
var rowNumber = -1;
$('Record_List').getChildren('div.Row').each(
function (el, num)
{
if (rowElem === el)
{
rowNumber = num;
}
});
// Find the position of the row and display it here:
alert('Row number: ' + rowNumber);
});
});
答案 0 :(得分:9)
Elements
返回的类型(getChildren
)包含Array
方法,including indexOf
。如果浏览器不存在,MooTools将提供该方法的实现。考虑到这一点,你可以写:
$('Record_List').getChildren('div.Row').indexOf(rowElem);
答案 1 :(得分:0)
这非常hacky,但您可以随时使用Array.prototype
的{{1}} ...
indexOf
答案 2 :(得分:-1)
MooTools make
返回当前元素之前的所有同级元素,先前同级的长度等于当前元素的索引。
Element.getAllPrevious