2016-10-08 2 views
2

У меня есть таблица с вложенными таблицами. И проблема в том, что в прослушивании событий мыши я хотел бы получить самую глубокую строку. Я нашел this, что почти то, что я ищу, но я недостаточно опыт, чтобы использовать этот пример для решения моей проблемы. Ключ к успеху делает окно предупреждения, чтобы отобразить «2» вместо «1» в ниже приведены JSFIddleПолучение внутренней строки во встроенных таблицах

<table> 
    <tbody> 
    <tr id='1'><td>A 
     <table> 
     <tbody> 
      <td><tr id='2'>B</tr></td> 
     </tbody> 
     </table> 
     </td> 
    </tr> 
    </tbody> 
</table> 

ПРИМЕЧАНИЕ: Для простоты я представил два уровня, но хотел бы попросить вас рассмотреть общий случай когда любой уровень встроенных структур может быть возможен.

UPDATE: Смотрите updated JSFiddle исправленный для комментариев NewToJS в

+2

Вы ваш '' td' и tr' в неправильном месте ... ' B' 'Должно быть B' Это вызовет предупреждение для первого ТД, поскольку событие мыши все еще витает над первой таблицей, чтобы перейти ко второй таблице. – NewToJS

+0

Почему вы не используете ': last' selector' $ ("tr: last") '? Проверьте https://jsfiddle.net/k5Lko28r/ – Mohammad

ответ

1
  • Использование event.stopPropagation()
  • Также обратите внимание, что td является потомком tr, а не наоборот

Event.stopPropagation() предотвращает дальнейшее распространение из текущее событие на этапах захвата и барботирования.

$(function() { 
 
    $(document).on('mouseover', 'tr', function(e) { 
 
    e.stopPropagation(); 
 
    console.log(this.id); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
    <tr id='1'> 
 
     <td>A 
 
     <table> 
 
      <tbody> 
 
      <tr id='2'> 
 
       <td>B</td> 
 
      </tr> 
 
      <tr id='3'> 
 
       <td>C</td> 
 
      </tr> 
 
      </tbody> 
 
     </table> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

Район, ваше решение отлично подходит для случая двойной структуры. Как я уже упоминал в вопросе, я ищу решение общего дела –

+0

@EdgarNavasardyan - Это те вещи, которые можно упомянуть в вопросе. Используйте случай, когда у вас есть тихий, и поэтому спецификация должна быть точной .. Хотите ли вы последние таблицы идентификатор первой строки или последние таблицы идентификатор последней строки и т. д. – Rayon

+0

Район, отредактируйте свой ответ для этого параметра var var = $ (this) .find ('tr: hover'). length? $ (this) .find ('tr: hover: last'): $ (this); 'и я, скорее всего, помечаю его как решение –

Смежные вопросы