2011-08-18 4 views
7

Tôi đang sử dụng ủy quyền sự kiện trong mootools. Tôi muốn biết số hàng đã được nhấp. Giải pháp của tôi được hiển thị trong số jsfiddle: Có cách nào tốt hơn những gì tôi hiện đang làm không?Mootools lấy chỉ mục con của một phần tử từ phần tử cha

Cách tiếp cận của tôi là so sánh các yếu tố cho đến khi tôi tìm thấy kết quả phù hợp. Có một phương pháp IndexOf tôi có thể sử dụng?

(Sau đây là các dữ liệu từ các jsfiddle cho tương lai)

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

Trả lời

9

Loại (Elements) trả về getChildren chứa các phương thức Array, including indexOf. MooTools sẽ cung cấp phương pháp đó nếu nó không tồn tại cho trình duyệt. Với ý nghĩ đó, bạn có thể viết:

$('Record_List').getChildren('div.Row').indexOf(rowElem); 

dụ Cập nhật:http://jsfiddle.net/andrewwhitaker/uJarB/

0

này là khá hacky, nhưng bạn luôn có thể sử dụng Array.prototype 's indexOf ...

Array.prototype.indexOf.call(list-o-children, elem-to-find)