jQuery: сохраните .index (), чтобы вернуть индекс каждого родителя. - PullRequest
2 голосов
/ 12 декабря 2011

В приведенном ниже коде я пытаюсь вернуть индекс выбранного элемента и, если это так, его родительский индекс. Проблема в том, что он пытается также вернуть индекс своего родителя ...

Например: если я нажму «1», предупреждение выдаст 0,0, что хорошо. Если я нажму на A2, оповещение вернется 0,1 (что тоже хорошо), а затем вернет 1,0 (родительская "координата") !!! Я хочу сохранить его, чтобы вернуть родительский массив ...

<ul>
    <li>1</li>
    <li>2
    <ul>
        <li>A2</li>
        <li>B2</li>
        <li>C2</li>
    </ul>
    </li>
    <li>3</li>
    <li>4</li>
    <li><5</li>
</ul>


$('#control ul li').click(function(e) { 
    e.preventDefault();

    var child = $(this).index(); // Get actual li element index
    var parent = $(this).parents('li').index(); // Get the later parent index
    if(parent === -1) { parent = 0; } // If it doesn't have a parent set -1 to 0
    var current = $.makeArray([child,parent]); // Make an array of the coordinate 

    alert(current);


    switcher(current);
});

1 Ответ

1 голос
/ 12 декабря 2011

Вы должны остановить распространение события. Попробуйте это

$('#control ul li').click(function(e) { 
   e.stopPropagation();

   var child = $(this).index(); // Get actual li element index
   var parent = $(this).parents('li').index(); // Get the later parent index
   if(parent === -1) { parent = 0; } // If it doesn't have a parent set -1 to 0
   var current = $.makeArray([child,parent]); // Make an array of the coordinate 

   alert(current);


   switcher(current);
});
...