Как мне работать с перекрывающимися слоями и ссылками в JQuery? - PullRequest
0 голосов
/ 20 сентября 2010

Работа с перекрывающимися слоями и ссылками в JQuery

тр ________________________________________________________________________________ | тд | тд | тд | | флажок | содержание | содержание ___________ | | ____________ | ____________________________________ | _______________ | _a ____ ссылка _____ |

У меня есть таблица, заполненная значениями, и часть содержимого содержит слишком много текста, поэтому я использовал функцию jquery для обрезки содержимого текста, если оно превышает лимит. Функция усечения добавляет ссылку в конце текста, чтобы обрезать / развернуть текстовое содержимое.

например. «Быстрая коричневая лиса перепрыгивает через» покажет «Быстрая коричневая лиса [подробнее]» ([подробнее] - это ссылка для ее расширения).

Теперь моя проблема в том, что я создал страницу, чтобы установить / снять флажок, когда вы щелкаете в любом месте строки (тег tr), но я не хочу, чтобы этот флажок затрагивался, когда я нажимаю на ссылку, т. Е. Потому что ссылка (тег) перекрывается строка (тег tr).

Я рассмотрел фильтрацию тега с помощью селекторов и использование диапазонов или разделителей для встраивания их под ссылку, чтобы предотвратить любое взаимодействие с базовой строкой. Мне удалось заблокировать щелчок по области, используя элементы div и span, но он блокирует щелчок, только если для позиции css задано абсолютное значение, и в этом случае несколько элементов div или span будут перекрывать друг друга в одной строке, а не по каждой ссылке.

Это было бы проще, если бы я мог сделать что-то вроде этого:

$ ( "тр"). Каждая (функция () { если ($ (это) .find ( "а"). есть ( "щелкнул") { //ничего не делать } Еще { если ($ (это) .find ( "тр"). есть ( "щелкнул") { // переключить флажок });

} });

Мне просто нужно выполнить оператор if, проверяющий, были ли нажаты ссылки или ссылки в строках, и выполнять над ними действия.

1 Ответ

0 голосов
/ 20 сентября 2010

Просто верните false из обработчика по ссылке.Это предотвратит нормальное действие ссылки , а предотвратит ее всплытие.

 $('tr a.showMore').click( function() {
      ... expand the text or show a popup...
      return false; // don't allow it to bubble up
 });
...