2011-08-18 10 views
7

से किसी तत्व का बाल-सूचकांक मिलता है, मैं mootools में ईवेंट प्रतिनिधिमंडल का उपयोग कर रहा हूं। मैं उस पंक्ति संख्या को जानना चाहता हूं जिसे क्लिक किया गया है। मेरा समाधान इस jsfiddle में दिखाया गया है: क्या मैं वर्तमान में क्या कर रहा हूं उससे बेहतर तरीका है?Mootools को अपने माता-पिता

मेरा दृष्टिकोण तब तक तत्वों की तुलना करना था जब तक कि मुझे मैच नहीं मिला। क्या कोई इंडेक्सऑफ विधि है जिसका मैं उपयोग कर सकता हूं?

(निम्नलिखित भविष्य के लिए 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> 

जावास्क्रिप्ट:

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

उत्तर

9

प्रकार (Elements) getChildren द्वारा लौटा Array विधियों, including indexOf है। MooTools उस विधि का कार्यान्वयन प्रदान करेगा यदि यह ब्राउज़र के लिए मौजूद नहीं है। इसे ध्यान में रखते, आप लिख सकते हैं:

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

अपडेट किया गया उदाहरण:http://jsfiddle.net/andrewwhitaker/uJarB/

0

यह सुंदर hacky है, लेकिन आप हमेशा Array.prototype उपयोग कर सकते हैं indexOf ...

Array.prototype.indexOf.call(list-o-children, elem-to-find) 
संबंधित मुद्दे